> a single parameter when executing a file
> let's change the above example to
> cat ~/anyfile1 ~/anyfile2
> or just:
> dir /p c:
> 
> or anything else, which needs many params
> 
> Anyway, if using the shell() would help in linux, it's a good hint.
> But for portability what do I do in other OS?
> 
> I'm just pointing out the more than one parameter execution of a command

There are three different things that could be wrong:

1. you are using the wrong function, or using it the wrong way. Show code.
2. Under unix, when executing _directly_ parameters are not separated by 
        whitespace but as separate arguments.
3. Under Unix, programs typically don't process things like ? and *, the
        shell does. So if you do something with a *, you _must_ go via
        the shell, unless you 100% certain know that the program accepts
        *'s directly (most don't, including ls)

Note to 3 So if I do 

ls -l *.bla

the shell does this:
- it expands "ls" to the full path /usr/bin/ls
- it expands all * and ?, fills in environment variables etc, so *.bla becomes  
        file1.bla file2.bla file3.bla etc.
- it parses the parameters into separate arguments
- it calls exec. In this example with three *.bla files, ls -l *.bla would
        result in the shell calling the exec function like this:
        execv('/usr/bin/ls','-l','file1.bla','file2.bla','file3.bla');

So always keep what you write on the commandline, and how you execute in an
Unix program apart. If you don't want that, execute via the shell (the call
is named fpsystem(), shell() is an older 1.x compability call)




_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to