Date: Tue, 2 Apr 2002 15:30:14 +0200 From: Roman Neuhauser <neuhauser@mobil.cz> To: freebsd-questions <freebsd-questions@freebsd.org> Subject: glob(3)/POSIX.2 question Message-ID: <20020402133014.GB389@roman.mobil.cz>
index | next in thread | raw e-mail
Hi there,
GNU <glob.h> lists GLOB_NOMATCH as the return value from the glob()
macro when it finds zero matches.
FreeBSD <glob.h> doesn't define GLOB_NOMATCH.
GNU <glob.h> defines glob_t thus:
typedef struct
{
__size_t gl_pathc; /* Count of paths matched by the pattern. */
char **gl_pathv; /* List of matched pathnames. */
__size_t gl_offs; /* Slots to reserve in `gl_pathv'. */
int gl_flags; /* Set to FLAGS, maybe | GLOB_MAGCHAR. */
/* If the GLOB_ALTDIRFUNC flag is set, the following functions
are used instead of the normal file access functions. */
void (*gl_closedir) __PMT ((void *));
struct dirent *(*gl_readdir) __PMT ((void *));
__ptr_t (*gl_opendir) __PMT ((__const char *));
int (*gl_lstat) __PMT ((__const char *__restrict,
struct stat *__restrict));
int (*gl_stat) __PMT ((__const char *__restrict, struct stat *__restrict));
} glob_t;
FreeBSD <glob.h> defines it thus:
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; /* Copy of flags parameter to glob. */
char **gl_pathv; /* List of paths matching pattern. */
/* Copy of errfunc parameter to glob. */
int (*gl_errfunc) __P((const char *, int));
/*
* Alternate filesystem access methods for glob; replacement
* versions of closedir(3), readdir(3), opendir(3), stat(2)
* and lstat(2).
*/
void (*gl_closedir) __P((void *));
struct dirent *(*gl_readdir) __P((void *));
void *(*gl_opendir) __P((const char *));
int (*gl_lstat) __P((const char *, struct stat *));
int (*gl_stat) __P((const char *, struct stat *));
} glob_t;
Both glob(3) pages claim that their respective implementations are POSIX.2
compliant (FBSD glob(3) admits it's not completely POSIX-y).
My question is: is the GNU <glob.h> (and especially GLOB_NOMATCH)
strictly POSIX? If so, shouldn't the FreeBSD glob() macro also return
GLOB_NOMATCH (and <glob.h> define it)? And irregardless of the previous
answer: how can one *portably* check for zero matches? And lastly: what
is the *common* way for doing this on FreeBSD?
Thanks a lot,
Roman
--
FreeBSD 4.4-STABLE
2:52PM up 8 days, 21:38, 30 users, load averages: 0.13, 0.06, 0.06
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020402133014.GB389>
