Sponsored Content
Top Forums Shell Programming and Scripting Perl script to find where functions is called in c Post 302483431 by bojomojo on Monday 27th of December 2010 06:10:06 AM
Old 12-27-2010
Perl script to find where functions is called in c

Hello,

I need to write a perl script to find where functions is called in c files..

The script should scan the file and find out the function names and then search to see where they are called...

Lets for now assume all functions are internal.

I don't know where to start Smilie

---------- Post updated at 06:10 AM ---------- Previous update was at 05:25 AM ----------

okay.. I managed to do it using this:
Code:
open FILE, "<test.h" or die $!;


while(<FILE>){
if(/static void ([^ \n\(]+)/)
{

print "function: $1\n";

$str=$1;
open FILE2, "<test.c" or die $!;
while(<FILE2>){
        if(!$sw && /(.+)\(.*\)/){
                $func_name=$1;
                $func_start=$.;
                $sw=1;
                next;
        }
        $c++ if $sw && /\{/;
        $c-- if $sw && /\}/; 
        if(/$str/){
                $print=1;
        }
        if($sw && $c==0){
                if($print){
                        
                        print "Caller function: $func_name\n";
                        $print=0;
                }
                $sw=0;
        }
}
close FILE2;


print "\n";
}
}

Now the problem is, I do not want to print the result, I want to write it in a certain part of the file.. for example, the h file has the format:
Code:
/* Function -------------------------------------------- 
* function name: function1
* caller: 
*
------------------------------------------------------------*/
static void function1(..);

I want the result to be written infront of the "caller: " field.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to determine if a script (perl) was called from a CRON job or commandline

Hi, Is there a way to determine if a Script is called from a CRON job or from a commandline Gerry. (2 Replies)
Discussion started by: jerryMcguire
2 Replies

2. Shell Programming and Scripting

perl problem - why isn't 'die' being called?

last week i started learning perl, so have limited skill and knowledge. why isn't 'die' being called and the script exiting before the 'directory created' line? if (! -d "$logdir") { system "mkdir -p $logdir" || die print "\nERROR: release log directory creation failed - $logdir: $!\n";... (4 Replies)
Discussion started by: mjays
4 Replies

3. Shell Programming and Scripting

perl functions and arrays

Hi, First I will tell my objective of this function (function one). I have a table for ex: id passwd name -- ------ ----- 1 fdhgfs werwer 2 fsdfs sdfsdf 3 sdfs sdfsdf 4 fdsfs dssdf . . . . . . The id, passwd and name are the arguments for another function say two. (1 Reply)
Discussion started by: mercuryshipzz
1 Replies

4. UNIX for Dummies Questions & Answers

finding called functions recursively

I want to write a shell script which traverses a cpp file. Suppose there is function fncn_name6 .. which is called by fncn_name5 which in turn called by fncn_name4 and so on .. in a single cpp class. ie fncn_name1 { fncn_name2 { fncn_name3 } { fncn_name4 } } so fncn_name1 is... (2 Replies)
Discussion started by: ultimatix
2 Replies

5. UNIX for Dummies Questions & Answers

Please help me to find the functions for description

i have taken a screen shot of the question. http://www.magicscreenshot.com/MagicScreenshot/REAdbT956kE.png Please some one help me.:) (1 Reply)
Discussion started by: kjamsheed
1 Replies

6. Programming

Can perl get a pagename when called from iframe?

how? there is html-page with: <iframe> <!--#exec cgi="perl-script"--> </iframe> so in that perl-script need to delegate the name of html-page why? too lazy for ajax (3 Replies)
Discussion started by: tip78
3 Replies

7. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

8. Programming

Perl: How to load some functions automaticaly, starting Perl inteructively (with -d -e 0)?

I would like to use Perl in 'interactive' mode (kind off), starting it by > perl -d -e 0; But I need to have some function be read on loading. Also, it should not be for anyone who starting Perl or use it any how. I did try to search, but not much result. I have try a file '.perldb':... (1 Reply)
Discussion started by: alex_5161
1 Replies

9. Shell Programming and Scripting

Mkdir fails when defined and called with functions.

In the below script i found that the alias mkdir_s is getting invoked from function configure() i.e the alias is kicking in. #!/bin/bash -e shopt -s expand_aliases alias mkdir=mkdir_s mkdir_s(){ if ]; then return else /usr/bin/mkdir "$1" return fi } configure() { mkdir -p... (9 Replies)
Discussion started by: mohtashims
9 Replies

10. UNIX for Beginners Questions & Answers

How to find C programming functions using shell script?

I want to find c function definition with pattern with shell script by checking condition for each line: data_type functionname(param_list){ .... } I knew cscope or ctag is usable for this task, but if there any ways to do without using them. I am thinking of checking line condition... (3 Replies)
Discussion started by: cmdcmd
3 Replies
GRUB-MKRESCUE(3)					     Library Functions Manual						  GRUB-MKRESCUE(3)

NAME
grub-mkrescue -- Generate a GRUB rescue image using GNU Xorriso. SYNOPSIS
grub-mkrescue [-o | --output=FILE] [--modules=MODULES] [--install-modules=MODULES] [--themes=THEMES] [--fonts=FONTS] [--locales=LOCALES] [--compress[=no,xz,gz,lzo]] [-d | --directory=DIR] [--grub-mkimage=FILE] [--rom-directory=DIR] [--xorriso=FILE] [--grub-glue-efi=FILE] [--grub-render-label=FILE] [--label-font=FILE] [--label-color=COLOR] [--label-bgcolor=FILE] [--product-name=STRING] [--product-version=STRING] [--sparc-boot] [--arcs-boot] DESCRIPTION
grub-mkrescue can be used to generate a rescue image with the GRUB bootloader. OPTIONS
--output=FILE Write the generated file to FILE. The default is to write to standard output. --modules=MODULES Pre-load modules specified by MODULES. --install-modules=MODULES Install only MODULES and their dependencies. The default is to install all available modules. --themes=THEMES Install THEMES. The default is to install the starfield theme, if available. --fonts=FONTS Install FONTS. The default is to install the unicode font. --locales=LOCALES Install only locales listed in LOCALES. The default is to install all available locales. --compress[=no,xz,gz,lzo] Compress GRUB files using the specified compression algorithm. --directory=DIR Use images and modules in DIR. --grub-mkimage=FILE Use FILE as grub-mkimage(1). The default is /usr/bin/grub-mkimage. --rom-directory=DIR Save ROM images in DIR. --xorriso=FILE Use FILE as xorriso. --grub-glue-efi=FILE Use FILE as grub-glue-efi(3). --grub-render-label=FILE Use FILE as grub-render-label(3). --label-font=FILE Use FILE as the font file for generated labels. --label-color=COLOR Use COLOR as the color for generated labels. --label-bgcolor=COLOR Use COLOR as the background color for generated labels. --product-name=STRING Use STRING as the product name in generated labels. --product-version=STRING Use STRING as the product version in generated labels. --sparc-boot Enable booting the SPARC platform. This disables HFS+, APM, ARCS, and "boot as disk image" on the i386-pc target platform. --arcs-boot Enable ARCS booting. This is typically for big-endian MIPS machines, and disables HFS+, APM, sparc64, and "boot as disk image" on the i386-pc target platform. -- All options after a -- will be passed directly to xorriso's command line when generating the image. SEE ALSO
info grub Wed Feb 26 2014 GRUB-MKRESCUE(3)
All times are GMT -4. The time now is 10:37 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy