[uClibc] usage problem (linux - ash - system command)

Philip Rakity prakity at yahoo.com
Tue Feb 1 11:56:40 UTC 2005


The actual code reads a file to get the addresses in origBuff.   These
addreses can be changed.   I tried to exact the essence of the problem.
 I know that  string is correct since I dumped it char by char into a
log file upto the trailing NULL.

The name /var/xxx/usr/bin is NOT the real path -- since xxx is a vendor
name that I do not wish to make public on the list but the path is
correct since I can  echo the cmd into a file in the /var/ directory
and the code works.

If it helps we are running an embedded SOC intel ixp4xx chip using
montevista linux.

Philip

--- Peter Kjellerstedt <peter.kjellerstedt at axis.com> wrote:

> Well, that is a messy way of doing it, but I assume that's due to 
> you having failed your first attempts, and is testing around.
> 
> The following ought to work (untested):
> 
> char origbuff[] = "00:01:02:03:04:05  00:05:04:03:02:01";
> int count = 2;
> 
> sprintf(cmd, "/var/xxx/usr/sbin -s macacl %d \"%s\"", count,
> origBuff);
> system(cmd);
> 
> Btw, the path & executable '/var/xxx/usr/sbin' looks suspicious. 
> Is that actually what you use, or a typo in the mail?
> That should be the name of the executable (and its path unless 
> the executable is in one of the paths specified by the environment
> variable $PATH).
> 
> //Peter
> 
> > -----Original Message-----
> > From: Philip Rakity [mailto:prakity at yahoo.com] 
> > Sent: Tuesday, February 01, 2005 09:16
> > To: Peter Kjellerstedt
> > Cc: uclibc at uclibc.org
> > Subject: RE: [uClibc] usage problem (linux - ash - system command)
> > 
> > Hi Peter,
> > 
> > ./aniSdkTool is in the path --
> > 
> > The code snippet is as follows:
> > 
> > char bs = '\\'l
> > char quote '"';
> > char origbuff[] = "00:01:02:03:04:05  00:05:04:03:02:01";
> > int count = 2;
> > 
> > sprintf (cmd, "/var/xxx/usr/sbin -s macacl %d %c%c%s%c%c", count,
> bs,
> > quote, origBuff, bs, quote);
> > 
> > system(cmd);
> > 
> > If I do the following things work --
> > 
> > system ("echo %s > /var/pmr", cmd)
> > system("sh /var/pmr);
> > 
> > Philip
> > ======
> > --- Peter Kjellerstedt <peter.kjellerstedt at axis.com> wrote:
> > 
> > > In cases like this, it is always a good idea to provide
> > > a snippet of the actual code in use, as well as an extract 
> > > of any debug messages.
> > > 
> > > Here is a small code example with two ways to use the system() 
> > > call to call ls with your arguments (I use ls as it will print
> > > the arguments when it fails to find them):
> > > 
> > > #include <stdlib.h>
> > > 
> > > int main()
> > > {
> > >   system("ls 1 2 \"00:11:22:33:44:55    00:11:22:44:55:66\"");
> > >   system("ls 1 2 '00:11:22:33:44:55    00:11:22:44:55:66'");
> > >   return 0;
> > > }
> > > 
> > > Are you sure it is the arguments that is the problem, and not
> > > for example that the aniSdkTool cannot be found in the current 
> > > working directory?
> > > 
> > > //Peter
> > > 
> > > > -----Original Message-----
> > > > From: uclibc-bounces at uclibc.org 
> > > > [mailto:uclibc-bounces at uclibc.org] On Behalf Of Philip Rakity
> > > > Sent: Tuesday, February 01, 2005 08:38
> > > > To: uclibc at uclibc.org
> > > > Subject: [uClibc] usage problem (linux - ash - system command)
> > > > 
> > > > I am writing a c program that uses the system command.
> > > > 
> > > > I am trying to use the system command to pass the following 
> > > > stringfor processing.  The double quotes are important.  
> > > > I am using busybox ash.
> > > > 
> > > > ./aniSdkTool 1 2 "00:11:22:33:44:55    00:11:22:44:55:66"
> > > > 
> > > > I use sprintf to built the string. 
> > > > 
> > > >  I have tried backslashing the " (double quotes)  eg \"
> > > > ./aniSdkTool 1 2 \"00:11:22:33:44:55    00:11:22:44:55:66\"
> > > > 
> > > > I have tried single quoting the the " eg  '"  or "'
> > > > ./aniSdkTool 1 2 '"00:11:22:33:44:55    00:11:22:44:55:66"'
> > > > 
> > > > The command fails HOWEVER if I echo the cmd to a /var/xxx 
> > > > file and then cat the command it looks just fine. 
> > > > looks like the line above with the quotes
> > > > 
> > > >  I can do the following from the shell  (console)
> > > > 
> > > > sh /var/xxx  works just fine 
> > > > as well as
> > > > ./var/xxx  (one execute premission is given to the file)
> > > > 
> > > > any ideas ?
> 

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 



More information about the uClibc mailing list