[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