/* * gf.h * * Read directories in a buffered way * * © 1998 Straylight/Edgeware */ /*----- Licensing note ----------------------------------------------------* * * This file is part of Straylight's core utilities (coreutils). * * Coreutils is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * Coreutils is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with coreutils. If not, write to the Free Software Foundation, * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GF_H #define GF_H #ifdef __cplusplus extern "C" { #endif /*----- Type definitions --------------------------------------------------*/ /* --- Wildcard matcher context --- */ typedef struct gf_ctx { char buf[1024]; /* Buffer for OS_HeebieJeebie */ int ctx; /* Context for OS_HeebieJeebie */ const char *dir; /* Pointer to directory to scan */ const char *pat; /* Pointer to pattern string */ int nleft; /* Number left in buffer */ char *p; /* Pointer into the buffer */ } gf_ctx; /*----- Functions ---------------------------------------------------------*/ /* --- @gf_init@ --- * * * Arguments: @gf_ctx *g@ = pointer to a context buffer for me * @const char *pat@ = pointer to a (RISC OS) pattern string * @cost char *dir@ = pointer to name of parent directory * * Returns: --- * * Use: Initialise a wildcard match context ready for scanning. */ extern void gf_init(gf_ctx */*g*/, const char */*pat*/, const char */*dir*/); /* --- @gf_next@ --- * * * Arguments: @gf_ctx *g@ = pointer to my context * * Returns: Pointer to a filename, or zero for end * * Use: Returns the next matching file from the block. */ extern char *gf_next(gf_ctx */*g*/); /*----- That's all, folks -------------------------------------------------*/ #ifdef __cplusplus } #endif #endif