From e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 22:34:10 +0200 Subject: Adding upstream version 4.2.2. Signed-off-by: Daniel Baumann --- tools/idl2wrs | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100755 tools/idl2wrs (limited to 'tools/idl2wrs') diff --git a/tools/idl2wrs b/tools/idl2wrs new file mode 100755 index 00000000..7a51f4bd --- /dev/null +++ b/tools/idl2wrs @@ -0,0 +1,114 @@ +#!/bin/sh +# +# File : idl2wrs +# +# Author : Frank Singleton (frank.singleton@ericsson.com) +# +# Copyright (C) 2001 Frank Singleton, Ericsson Inc. +# +# This file is a simple shell script wrapper for the IDL to +# Wireshark dissector code. +# +# ie: wireshark_be.py and wireshark_gen.py +# +# This file is used to generate "Wireshark" dissectors from IDL descriptions. +# The output language generated is "C". It will generate code to use the +# GIOP/IIOP get_CDR_XXX API. +# +# Please see packet-giop.h in Wireshark distro for API description. +# Wireshark is available at https://www.wireshark.org/ +# +# Omniidl is part of the OmniOrb distribution, and is available at +# http://omniorb.sourceforge.net/ +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +# + + +# Must at least supply an IDL file + +if [ $# -lt 1 ]; then + echo "idl2wrs Error: no IDL file specified." + echo "Usage: idl2wrs idl_file_name" + exit 1; +fi + +# Check the file name for valid characters. +# Implementation based on Dave Taylor's validalnum shell script from his book, +# "Wicked Cool Shell Scripts", as well as Mark Rushakoff's answer he provided +# to the question posted at stackoverflow.com entitled, "How can I use the +# UNIX shell to count the number of times a letter appears in a text file?" +file=$(basename $1) +compressed="$(echo $file | sed 's/[^[:alnum:]._]//g')" +if [ "$compressed" != "$file" ]; then + echo "idl2wrs Error: Invalid file name: $file" + exit 1; +fi + +# Only allow one '.' at most. +count=$(echo $compressed | awk -F. '{c += NF - 1} END {print c}') +if [ $count -gt 1 ] ; then + echo "idl2wrs Error: Invalid file name: $file" + exit 1; +fi + +# +# Run wireshark backend, looking for wireshark_be.py and wireshark_gen.py +# in pythons's "site-packages" directory. If cannot find that, then +# try looking in current directory. If still cannot, then exit with +# error. + +if [ -f $PYTHONPATH/site-packages/wireshark_be.py ] && [ -f $PYTHONPATH/site-packages/wireshark_gen.py ]; then + exec omniidl -p $PYTHONPATH/site-packages -b wireshark_be $@ + /* not reached */ +fi + +# Try current directory. + +if [ -f ./wireshark_be.py ] && [ -f ./wireshark_gen.py ]; then + exec omniidl -p ./ -b wireshark_be $@ + /* not reached */ +fi + +# Could not find both wireshark_be.py AND wireshark_gen.py +# So let's just try to run it without -p, hoping that the installation +# set up a valid path. + +exec omniidl -b wireshark_be $@ + +old code: not reached + +echo "idl2wrs Error: Could not find both wireshark_be.py AND wireshark_gen.py." +echo "Please ensure you have the PYTHONPATH variable set, or that wireshark_be.py " +echo "and wireshark_gen.py exist in the current directory. " +echo +echo "On this system, PYTHONPATH is : $PYTHONPATH" +echo + +exit 2 + + +# +# Editor modelines - https://www.wireshark.org/tools/modelines.html +# +# Local variables: +# c-basic-offset: 4 +# indent-tabs-mode: nil +# End: +# +# vi: set shiftwidth=4 expandtab: +# :indentSize=4:noTabs=true: +# -- cgit v1.2.3