Hi all,

I ran into a problem with resolving commandline parameters, due to
wildcard expansion by bash.

Consider the following code:

  for i := 1 to paramcount do writeln(i,': ',paramstr(i));

My program expects input from the commandline in the form

scopy source dest

when you now specify wildcards on the commandline, they will be
expanded by bash, so the output will be like this:

bart@simenon:~/LazarusProjecten/ConsoleProjecten/scopy> ./scopy *
1: backup
2: lib
3: scopy
4: scopy.ico
5: scopy.lpi
6: scopy.lpr
7: scopy.res
8: x
bart@simenon:~/LazarusProjecten/ConsoleProjecten/scopy>


However from inside my program I cannot distinguish between the
followin 2 scenarios:
1: x is the last item in the list expanded by bash or
2: the commandline actually was "scopy * x"

Scenario 1 is a syntax error, and it should not be treated as if it
were scenario 2.

Things get even more confusing when i use a syntax like

scopy source dest excludefilter

bart@simenon:~/LazarusProjecten/ConsoleProjecten/scopy> ./scopy *  y *.bak
1: 123
2: 1233
3: 12333
4: 123.bak
5: 123.tmp
6: 456.bak
7: backup
8: lib
9: scopy
10: scopy.ico
11: scopy.lpi
12: scopy.lpr
13: scopy.res
14: x
15: y
16: 123.bak
17: 456.bak


Obviously this is a common scenario on Linux, so how to treat it?

I would prefer to expand the wildcards by myself, but it seems I have
no access to what the user actually typed on the commandline?

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

Reply via email to