XFFM & XFDESKTOP build bug in XFCE4
edscott wilson garcia
edscott at imp.mx
Mon Jun 30 22:18:31 CEST 2003
Hi Bernhard,
Thanks. Xffm should now compile without complaining about GLOB_NOMATCH
in macOSX. It's in CVS with the usual 24 hr. delay.
regards,
Edscott
On Mon, 2003-06-30 at 08:32, Bernhard Walle wrote:
> On Mon, 30 Jun 2003 at 08:19 (-0500), edscott wilson garcia wrote:
> > El dom, 29-06-2003 a las 00:31, lenny bruce escribió:
> >
> > >
> > > This bug has been reported in many ways for many UNIX systems.
> > > I found many different references with Google.
> > >
> > > Apparently our glob.h doesn't have GLOB_NOMATCH... same bug as on FreeBSD.
> > >
> > > http://www.geocrawler.com/archives/3/311/2000/7/200/4104649/
> > > http://lists.freeswan.org/pipermail/bugs/2001-November/000093.html
> >
> > This is quite weird. I've been using FreeBSD for quite a while. The
> > section of the man page I sent is in fact from FreeBSD 4.7. Anyways,
> > that's beside the point. Please look in the mac0SX and see what the glob
> > C function (not the glob program from xfce3) returns whens no match is
> > found. One I know that, the fix will take about 3 seconds.
>
> (I've ssh access to a Mac with OS X. That's the manpage:)
>
> -------------------------------------------------------------------------------
> GLOB(3) System Library Functions Manual GLOB(3)
>
> NAME
> glob, globfree - generate pathnames matching a pattern
>
> SYNOPSIS
> #include <glob.h>
>
> int
> glob(const char *pattern, int flags,
> const int (*errfunc)(const char *, int), glob_t *pglob);
>
> void
> globfree(glob_t *pglob);
>
> DESCRIPTION
> The glob() function is a pathname generator that implements the rules for
> file name pattern matching used by the shell.
>
> The include file glob.h defines the structure type glob_t, which contains
> at least the following fields:
>
> typedef struct {
> int gl_pathc; /* count of total paths so far */
> int gl_matchc; /* count of paths matching pattern */
> int gl_offs; /* reserved at beginning of gl_pathv */
> int gl_flags; /* returned flags */
> char **gl_pathv; /* list of paths matching pattern */
> } glob_t;
>
> The argument pattern is a pointer to a pathname pattern to be expanded.
> The glob() argument matches all accessible pathnames against the pattern
> and creates a list of the pathnames that match. In order to have access
> to a pathname, glob() requires search permission on every component of a
> path except the last and read permission on each directory of any file-
> name component of pattern that contains any of the special characters
> `*', `'? or [`'.
>
> The glob() argument stores the number of matched pathnames into the
> gl_pathc field, and a pointer to a list of pointers to pathnames into the
> gl_pathv field. The first pointer after the last pathname is NULL. If
> the pattern does not match any pathnames, the returned number of matched
> paths is set to zero.
>
> It is the caller's responsibility to create the structure pointed to by
> pglob. The glob() function allocates other space as needed, including
> the memory pointed to by gl_pathv.
>
> The argument flags is used to modify the behavior of glob(). The value
> of flags is the bitwise inclusive OR of any of the following values
> defined in glob.h:
>
> GLOB_APPEND Append pathnames generated to the ones from a previous
> call (or calls) to glob(). The value of gl_pathc will
> be the total matches found by this call and the previous
> call(s). The pathnames are appended to, not merged with
> the pathnames returned by the previous call(s). Between
> calls, the caller must not change the setting of the
> GLOB_DOOFFS flag, nor change the value of gl_offs when
> GLOB_DOOFFS is set, nor (obviously) call globfree() for
> pglob.
>
> GLOB_DOOFFS Make use of the gl_offs field. If this flag is set,
> gl_offs is used to specify how many NULL pointers to
> prepend to the beginning of the gl_pathv field. In
> other words, gl_pathv will point to gl_offs NULL point-
> ers, followed by gl_pathc pathname pointers, followed by
> a NULL pointer.
>
> GLOB_ERR Causes glob() to return when it encounters a directory
> that it cannot open or read. Ordinarily, glob() contin-
> ues to find matches.
>
> GLOB_MARK Each pathname that is a directory that matches pattern
> has a slash appended.
>
> GLOB_NOCHECK If pattern does not match any pathname, then glob()
> returns a list consisting of only pattern, with the num-
> ber of total pathnames is set to 1, and the number of
> matched pathnames set to 0. If GLOB_QUOTE is set, its
> effect is present in the pattern returned.
>
> GLOB_NOSORT By default, the pathnames are sorted in ascending ASCII
> order; this flag prevents that sorting (speeding up
> glob()).
>
> The following values may also be included in flags, however, they are
> non-standard extensions to IEEE Std 1003.2 (``POSIX.2'').
>
> GLOB_ALTDIRFUNC The following additional fields in the pglob structure
> have been initialized with alternate functions for glob
> to use to open, read, and close directories and to get
> stat information on names found in those directories.
>
> void *(*gl_opendir)(const char * name);
> struct dirent *(*gl_readdir)(void *);
> void (*gl_closedir)(void *);
> int (*gl_lstat)(const char *name, struct stat *st);
> int (*gl_stat)(const char *name, struct stat *st);
>
> This extension is provided to allow programs such as
> restore(8) to provide globbing from directories stored
> on tape.
>
> GLOB_BRACE Pre-process the pattern string to expand `{pat,pat,...}'
> strings like csh(1). The pattern `{}' is left unex-
> panded for historical reasons. (Csh(1) does the same
> thing to ease typing of find(1) patterns.)
>
> GLOB_MAGCHAR Set by the glob() function if the pattern included glob-
> bing characters. See the description of the usage of
> the gl_matchc structure member for more details.
>
> GLOB_NOMAGIC Is the same as GLOB_NOCHECK but it only appends the
> pattern if it does not contain any of the special char-
> acters ``*'', ``?'' or ``[''. GLOB_NOMAGIC is provided
> to simplify implementing the historic csh(1) globbing
> behavior and should probably not be used anywhere else.
>
> GLOB_QUOTE Use the backslash (`\') character for quoting: every
> occurrence of a backslash followed by a character in the
> pattern is replaced by that character, avoiding any spe-
> cial interpretation of the character.
>
> GLOB_TILDE Expand patterns that start with `~' to user name home
> directories.
>
> If, during the search, a directory is encountered that cannot be opened
> or read and errfunc is non-NULL, glob() calls (*errfunc)(path, errno).
> This may be unintuitive: a pattern like `*/Makefile' will try to stat(2)
> `foo/Makefile' even if `foo' is not a directory, resulting in a call to
> errfunc. The error routine can suppress this action by testing for
> ENOENT and ENOTDIR; however, the GLOB_ERR flag will still cause an imme-
> diate return when this happens.
>
> If errfunc returns non-zero, glob() stops the scan and returns GLOB_ABEND
> after setting gl_pathc and gl_pathv to reflect any paths already matched.
> This also happens if an error is encountered and GLOB_ERR is set in
> flags, regardless of the return value of errfunc, if called. If GLOB_ERR
> is not set and either errfunc is NULL or errfunc returns zero, the error
> is ignored.
>
> The globfree() function frees any space associated with pglob from a pre-
> vious call(s) to glob().
>
> RETURN VALUES
> On successful completion, glob() returns zero. In addition the fields of
> pglob contain the values described below:
>
> gl_pathc contains the total number of matched pathnames so far.
> This includes other matches from previous invocations of
> glob() if GLOB_APPEND was specified.
>
> gl_matchc contains the number of matched pathnames in the current
> invocation of glob().
>
> gl_flags contains a copy of the flags parameter with the bit
> GLOB_MAGCHAR set if pattern contained any of the special
> characters ``*'', ``?'' or ``['', cleared if not.
>
> gl_pathv contains a pointer to a NULL-terminated list of matched
> pathnames. However, if gl_pathc is zero, the contents of
> gl_pathv are undefined.
>
> If glob() terminates due to an error, it sets errno and returns one of
> the following non-zero constants, which are defined in the include file
> <glob.h>:
>
> GLOB_NOSPACE An attempt to allocate memory failed.
>
> GLOB_ABEND The scan was stopped because an error was encountered and
> either GLOB_ERR was set or (*errfunc)() returned non-zero.
>
> The arguments pglob->gl_pathc and pglob->gl_pathv are still set as speci-
> fied above.
>
> EXAMPLE
> A rough equivalent of `ls -l *.c *.h' can be obtained with the following
> code:
>
> glob_t g;
> g.gl_offs = 2;
> glob("*.c", GLOB_DOOFFS, NULL, &g);
> glob("*.h", GLOB_DOOFFS | GLOB_APPEND, NULL, &g);
> g.gl_pathv[0] = "ls";
> g.gl_pathv[1] = "-l";
> execvp("ls", g.gl_pathv);
>
> SEE ALSO
> sh(1), fnmatch(3), regexp(3)
>
> STANDARDS
> The glob() function is expected to be IEEE Std 1003.2 (``POSIX.2'') com-
> patible with the exception that the flags GLOB_ALTDIRFUNC, GLOB_BRACE
> GLOB_MAGCHAR, GLOB_NOMAGIC, GLOB_QUOTE, and GLOB_TILDE, and the fields
> gl_matchc and gl_flags should not be used by applications striving for
> strict POSIX conformance.
>
> HISTORY
> The glob() and globfree() functions first appeared in 4.4BSD.
>
> BUGS
> Patterns longer than MAXPATHLEN may cause unchecked errors.
>
> The glob() function may fail and set errno for any of the errors speci-
> fied for the library routines stat(2), closedir(3), opendir(3),
> readdir(3), malloc(3), and free(3).
>
> BSD April 16, 1994 BSD
>
> -------------------------------------------------------------------------------
>
> HTH.
>
> Regards,
> Bernhard
--
edscott wilson garcia <edscott at imp.mx>
More information about the Xfce4-dev
mailing list