Re: Command line globber/tokenizer library for C?

Liste des GroupesRevenir à l c 
Sujet : Re: Command line globber/tokenizer library for C?
De : (at) *nospam* ednolan (ted@loft.tnolan.com (Ted Nolan)
Groupes : comp.lang.c
Date : 11. Sep 2024, 00:13:06
Autres entêtes
Organisation : loft
Message-ID : <lkbujiFfsulU2@mid.individual.net>
References : 1 2
User-Agent : trn 4.0-test76 (Apr 2, 2001)
In article <87ldzzyyus.fsf@nosuchdomain.example.com>,
Keith Thompson  <Keith.S.Thompson+u@gmail.com> wrote:
ted@loft.tnolan.com (Ted Nolan <tednolan>) writes:
I have the case where my C program is handed a string which is basically
a command line.
>
Is there a common open source C library for tokenizing and globbing
this into an argc/argv as a shell would do?  I've googled, but I get
too much C++ & other language stuff.
>
Note that I'm not asking for getopt(), that comes afterwards, and
I'm not asking for any variable interpolation, but just that a string
like, say
>
hello -world "This is foo.*" foo.*
>
becomes something like

my_argv[0] "hello"
my_argv[1] "-world"
my_argv[2] "This is foo.*"
my_argv[3] foo.h
my_argv[4] foo.c
my_argv[5] foo.txt
>
my_argc = 6
>
I could live without the globbing if that's a bridge too far.
>
What environment(s) does this need to run in?
>
I don't know of a standard(ish) function that does this.  POSIX defines
the glob() function, but it only does globbing, not word-splitting.
>
If you're trying to emulate the way the shell (which one?) parses
command lines, and *if* you're on a system that has a shell, you can
invoke a shell to do the work for you.  Here's a quick and dirty
example:
>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
   const char *line = "hello -world \"This is foo.*\" foo.*";
   char *cmd = malloc(50 + strlen(line));
   sprintf(cmd, "printf '%%s\n' %s", line);
   system(cmd);
}
>
This prints the arguments to stdout, one per line (and doesn't handle
arguments with embedded newlines very well).  You could modify the
command to write the output to a temporary file and then read that file,
or you could use popen() if it's available.
>
Of course this is portable only to systems that have a Unix-style shell,
and it can even behave differently depending on how the default shell
behaves.  And invoking a new process is going to make this relatively
slow, which may or may not matter depending on how many times you need
to do it.
>
There is no completely portable solution, since you need to be able to
get directory listings to handle wildcards.

Yeah, that's the kind of thing I was hoping to avoid, and probably more
than I want to get into, but thanks!

>
A quick Google search points to this question:
>
https://stackoverflow.com/q/21335041/827263
"How to split a string using shell-like rules in C++?"
>
An answer refers to Boost.Program_options, which is specific to C++.
Apparently boost::program_options::split_unix() does what you're looking
for.
>
--
columbiaclosings.com
What's not in Columbia anymore..

Date Sujet#  Auteur
10 Sep 24 * Command line globber/tokenizer library for C?110ted@loft.tnolan.com (Ted Nolan
10 Sep 24 +* Re: Command line globber/tokenizer library for C?2Lawrence D'Oliveiro
10 Sep 24 i`- Re: Command line globber/tokenizer library for C?1Keith Thompson
10 Sep 24 +* Re: Command line globber/tokenizer library for C?2Janis Papanagnou
11 Sep 24 i`- Re: Command line globber/tokenizer library for C?1ted@loft.tnolan.com (Ted Nolan
10 Sep 24 +* Re: Command line globber/tokenizer library for C?2Keith Thompson
11 Sep 24 i`- Re: Command line globber/tokenizer library for C?1ted@loft.tnolan.com (Ted Nolan
11 Sep 24 +* Re: Command line globber/tokenizer library for C?2Kenny McCormack
11 Sep 24 i`- Re: Command line globber/tokenizer library for C?1ted@loft.tnolan.com (Ted Nolan
11 Sep 24 +* Re: Command line globber/tokenizer library for C?97Bonita Montero
11 Sep 24 i+* Re: Command line globber/tokenizer library for C?3ted@loft.tnolan.com (Ted Nolan
11 Sep 24 ii`* Re: Command line globber/tokenizer library for C?2Bonita Montero
11 Sep 24 ii `- Re: Command line globber/tokenizer library for C?1ted@loft.tnolan.com (Ted Nolan
11 Sep 24 i+- Re: Command line globber/tokenizer library for C?1Bart
11 Sep 24 i`* Re: Command line globber/tokenizer library for C?92Kenny McCormack
11 Sep 24 i `* Re: Command line globber/tokenizer library for C?91Bonita Montero
11 Sep 24 i  +- Re: Command line globber/tokenizer library for C?1Kenny McCormack
11 Sep 24 i  +* Re: Command line globber/tokenizer library for C?13ted@loft.tnolan.com (Ted Nolan
11 Sep 24 i  i`* Re: Command line globber/tokenizer library for C?12Keith Thompson
12 Sep 24 i  i `* Re: Command line globber/tokenizer library for C?11ted@loft.tnolan.com (Ted Nolan
12 Sep 24 i  i  +* Re: Command line globber/tokenizer library for C?8Keith Thompson
12 Sep 24 i  i  i`* Re: Command line globber/tokenizer library for C?7ted@loft.tnolan.com (Ted Nolan
12 Sep 24 i  i  i `* Re: Command line globber/tokenizer library for C?6Kenny McCormack
12 Sep 24 i  i  i  `* Re: Command line globber/tokenizer library for C?5ted@loft.tnolan.com (Ted Nolan
12 Sep 24 i  i  i   `* Columbia (Was: Command line globber/tokenizer library for C?)4Kenny McCormack
12 Sep 24 i  i  i    `* Re: Columbia (Was: Command line globber/tokenizer library for C?)3Michael S
12 Sep 24 i  i  i     +- Re: Columbia (Was: Command line globber/tokenizer library for C?)1David Brown
13 Sep 24 i  i  i     `- Re: Columbia (Was: Command line globber/tokenizer library for C?)1Lawrence D'Oliveiro
12 Sep 24 i  i  +- Re: Command line globber/tokenizer library for C?1Lawrence D'Oliveiro
12 Sep 24 i  i  `- Re: Command line globber/tokenizer library for C?1Ben Bacarisse
11 Sep 24 i  `* Re: Command line globber/tokenizer library for C?76Bart
12 Sep 24 i   `* Re: Command line globber/tokenizer library for C?75Bonita Montero
12 Sep 24 i    `* Re: Command line globber/tokenizer library for C?74Bart
12 Sep 24 i     +* Re: Command line globber/tokenizer library for C?19Kenny McCormack
12 Sep 24 i     i+* Re: Command line globber/tokenizer library for C?17Janis Papanagnou
12 Sep 24 i     ii`* Other programming languages (Was: Command line globber/tokenizer library for C?)16Kenny McCormack
12 Sep 24 i     ii `* Re: Other programming languages (Was: Command line globber/tokenizer library for C?)15Bonita Montero
12 Sep 24 i     ii  `* Re: Other programming languages (Was: Command line globber/tokenizer library for C?)14Kenny McCormack
12 Sep 24 i     ii   `* Re: Other programming languages (Was: Command line globber/tokenizer library for C?)13Bonita Montero
12 Sep 24 i     ii    `* Re: Other programming languages (Was: Command line globber/tokenizer library for C?)12Janis Papanagnou
12 Sep 24 i     ii     +* Re: Other programming languages (Was: Command line globber/tokenizer library for C?)2Bonita Montero
12 Sep 24 i     ii     i`- Re: Other programming languages (Was: Command line globber/tokenizer library for C?)1Janis Papanagnou
13 Sep 24 i     ii     `* Re: Other programming languages (Was: Command line globber/tokenizer library for C?)9Lawrence D'Oliveiro
13 Sep 24 i     ii      +* Re: Other programming languages (Was: Command line globber/tokenizer library for C?)3James Kuyper
13 Sep 24 i     ii      i`* Re: Other programming languages (Was: Command line globber/tokenizer library for C?)2Lawrence D'Oliveiro
13 Sep 24 i     ii      i `- Re: Other programming languages (Was: Command line globber/tokenizer library for C?)1Michael S
13 Sep 24 i     ii      +* Re: Other programming languages (Was: Command line globber/tokenizer library for C?)4Janis Papanagnou
13 Sep 24 i     ii      i+* Re: Other programming languages (Was: Command line globber/tokenizer library for C?)2Lawrence D'Oliveiro
13 Sep 24 i     ii      ii`- Re: Other programming languages (Was: Command line globber/tokenizer library for C?)1Janis Papanagnou
13 Sep 24 i     ii      i`- Re: Other programming languages (Was: Command line globber/tokenizer library for C?)1Kaz Kylheku
13 Sep 24 i     ii      `- Re: Other programming languages (Was: Command line globber/tokenizer library for C?)1Kaz Kylheku
12 Sep 24 i     i`- Re: Command line globber/tokenizer library for C?1Bonita Montero
12 Sep 24 i     +* Re: Command line globber/tokenizer library for C?53Janis Papanagnou
12 Sep 24 i     i+* Re: Command line globber/tokenizer library for C?38Bart
12 Sep 24 i     ii+* Re: Command line globber/tokenizer library for C?5Bart
12 Sep 24 i     iii+- Re: Command line globber/tokenizer library for C?1Bonita Montero
12 Sep 24 i     iii`* Re: Command line globber/tokenizer library for C?3Janis Papanagnou
12 Sep 24 i     iii `* Re: Command line globber/tokenizer library for C?2Bart
12 Sep 24 i     iii  `- Re: Command line globber/tokenizer library for C?1Bonita Montero
12 Sep 24 i     ii`* Re: Command line globber/tokenizer library for C?32Michael S
12 Sep 24 i     ii +- Re: Command line globber/tokenizer library for C?1Michael S
12 Sep 24 i     ii `* Re: Command line globber/tokenizer library for C?30Bart
12 Sep 24 i     ii  `* Re: Command line globber/tokenizer library for C?29Bonita Montero
12 Sep 24 i     ii   +- Re: Command line globber/tokenizer library for C?1Kenny McCormack
12 Sep 24 i     ii   `* Re: Command line globber/tokenizer library for C?27Michael S
13 Sep 24 i     ii    +* Re: Command line globber/tokenizer library for C?8Bonita Montero
13 Sep 24 i     ii    i`* Re: Command line globber/tokenizer library for C?7Michael S
13 Sep 24 i     ii    i `* Re: Command line globber/tokenizer library for C?6Bonita Montero
13 Sep 24 i     ii    i  +* Re: Command line globber/tokenizer library for C?2Michael S
13 Sep 24 i     ii    i  i`- Re: Command line globber/tokenizer library for C?1Bonita Montero
14 Sep 24 i     ii    i  `* Re: Command line globber/tokenizer library for C?3Lawrence D'Oliveiro
14 Sep 24 i     ii    i   `* Re: Command line globber/tokenizer library for C?2Bonita Montero
14 Sep 24 i     ii    i    `- Re: Command line globber/tokenizer library for C?1Lawrence D'Oliveiro
13 Sep 24 i     ii    `* Re: Command line globber/tokenizer library for C?18Tim Rentsch
15 Sep11:22 i     ii     `* Re: Command line globber/tokenizer library for C?17Michael S
16 Sep09:52 i     ii      +* Re: Command line globber/tokenizer library for C?3Tim Rentsch
16 Sep11:23 i     ii      i`* Re: Command line globber/tokenizer library for C?2Michael S
17 Sep12:12 i     ii      i `- Re: Command line globber/tokenizer library for C?1Tim Rentsch
18 Sep00:34 i     ii      `* Re: Command line globber/tokenizer library for C?13antispam
18 Sep01:33 i     ii       +- Re: Command line globber/tokenizer library for C?1Tim Rentsch
18 Sep01:46 i     ii       `* Re: Command line globber/tokenizer library for C?11Michael S
18 Sep02:07 i     ii        +* Re: Command line globber/tokenizer library for C?5Bart
18 Sep10:43 i     ii        i`* Re: Command line globber/tokenizer library for C?4Michael S
18 Sep11:49 i     ii        i +* Re: Command line globber/tokenizer library for C?2Bart
18 Sep12:44 i     ii        i i`- Re: Command line globber/tokenizer library for C?1David Brown
18 Sep15:01 i     ii        i `- Re: Command line globber/tokenizer library for C?1Tim Rentsch
18 Sep03:31 i     ii        +* Re: Command line globber/tokenizer library for C?3Tim Rentsch
18 Sep10:03 i     ii        i`* Re: Command line globber/tokenizer library for C?2Michael S
18 Sep14:09 i     ii        i `- Re: Command line globber/tokenizer library for C?1Tim Rentsch
18 Sep04:20 i     ii        `* Re: Command line globber/tokenizer library for C?2Lawrence D'Oliveiro
18 Sep10:05 i     ii         `- Re: Command line globber/tokenizer library for C?1Michael S
12 Sep 24 i     i`* Re: Command line globber/tokenizer library for C?14Bonita Montero
12 Sep 24 i     i `* Re: Command line globber/tokenizer library for C?13Janis Papanagnou
12 Sep 24 i     i  `* Re: Command line globber/tokenizer library for C?12Bonita Montero
12 Sep 24 i     i   +* Re: Command line globber/tokenizer library for C?2Janis Papanagnou
12 Sep 24 i     i   i`- Re: Command line globber/tokenizer library for C?1Bonita Montero
13 Sep 24 i     i   `* Re: Command line globber/tokenizer library for C?9Lawrence D'Oliveiro
13 Sep 24 i     i    `* Re: Command line globber/tokenizer library for C?8Bonita Montero
13 Sep 24 i     i     `* Re: Command line globber/tokenizer library for C?7Lawrence D'Oliveiro
13 Sep 24 i     i      `* Re: Command line globber/tokenizer library for C?6Michael S
14 Sep 24 i     i       `* Re: Command line globber/tokenizer library for C?5Lawrence D'Oliveiro
12 Sep 24 i     `- Re: Command line globber/tokenizer library for C?1Bonita Montero
12 Sep 24 `* Re: Command line globber/tokenizer library for C?4Bonita Montero

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal