home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
fish
/
telecom
/
uucp_442
/
src
/
dnews
/
subs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-12-09
|
2KB
|
91 lines
/*
* SUBS.C
*/
#include <exec/types.h>
#include "defs.h"
#include <libraries/dos.h>
#include <fcntl.h>
Prototype void FindUser(char *, int);
Prototype void ScanNewsDirs(void (*)(), long);
Prototype char *FindField(FILE *, char *);
Prototype int FileExists(char *);
typedef struct FileInfoBlock FIB;
void
FindUser(buf, bufsiz)
char *buf;
int bufsiz;
{
char *user;
user = GetUserName();
if (user == NULL) {
user = "FuBar";
printf("No UserName env: var or Config var !\n");
}
strncpy(buf, user, bufsiz - 1);
buf[bufsiz] = 0;
}
void
ScanNewsDirs(vect, arg)
void (*vect)();
long arg;
{
FIB *fib = malloc(sizeof(FIB));
char *cfdir = GetConfigDir(UUNEWS);
BPTR lock;
if (lock = Lock(cfdir, SHARED_LOCK)) {
if (Examine(lock, fib)) {
while (ExNext(lock, fib)) {
sprintf(TmpBuf, "%s%s", cfdir, fib->fib_FileName);
(*vect)(TmpBuf, fib->fib_FileName, arg);
}
}
UnLock(lock);
}
free(fib);
}
char *
FindField(fi, field)
FILE *fi;
char *field;
{
short len = strlen(field);
rewind(fi);
while (fgets(TmpBuf, sizeof(TmpBuf), fi) && TmpBuf[0] != '\n') {
if (strnicmp(TmpBuf, field, len) == 0) {
field = TmpBuf + len;
while (*field == ' ' || *field == 9)
++field;
for (len = strlen(field) - 1; len >= 0 && (field[len] == ' ' || field[len] == 9 || field[len] == '\n'); --len);
++len;
field[len] = 0;
return(strdup(field));
}
}
return(NULL);
}
int
FileExists(file)
char *file;
{
int fd;
if ((fd = open(file, O_RDONLY)) >= 0) {
close(fd);
return(1);
}
return(0);
}