summaryrefslogblamecommitdiffstats
path: root/innbbsd/file.c
blob: 7016f940cb941ccef9a37326eaa3ffa3bbbfb3ec (plain) (tree)
1
2
3
4


                      
                   






















                                                                  
                              
 





                                  































                                           
           
                     














                                                       
      











                                           
           
                    













                                                       
      








                                          
           
                              













                                                       
      








                                          
           
                              













                                                       
      
















                                                                                                             
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdarg.h>
#define MAXARGS     100

/*   isfile is called by
 *   isfile(filenamecomp1, filecomp2,  filecomp3, ..., (char *)0);
 *   extern "C" int isfile(const char *, const char *[]) ;
*/


char FILEBUF[4096];


static char DOLLAR_[8192];
char *getstream(fp)
FILE *fp;
{
    return fgets(DOLLAR_, sizeof(DOLLAR_) -1 , fp);
}

/*
    The same as sprintf, but return the new string
    fileglue("%s/%s",home,".newsrc");
*/

char *fileglue(char *fmt, ...)
{
    va_list ap;
    static char gluebuffer[8192];
    va_start(ap, fmt);
    vsprintf(gluebuffer, fmt, ap);
    va_end(ap);
    return gluebuffer;
}

long 
filesize(filename)
char* filename;
{
    struct stat st;

    if (stat(filename,&st)) return 0; 
    return st.st_size;
}

int iszerofile(filename)
char* filename;
{
    struct stat st;

    if (stat(filename,&st)) return 0; 
    if (st.st_size == 0) return 1;
    return 0;
}

int isfile(filename)
char* filename;
{
    struct stat st;

    if (stat(filename,&st)) return 0; 
    if (!S_ISREG(st.st_mode)) return 0;
    return 1;
}

#ifdef TEST
int isfilev(va_alist)
{
    va_list ap;
    struct stat st;
    char *p;
    va_start(ap);

    FILEBUF[0]='\0';
        while ((p = va_arg(ap, char *)) != (char *)0) {
        strcat(FILEBUF,p);
    }
    printf("file %s\n",FILEBUF);

    va_end(ap);
    return isfile(FILEBUF);
}
#endif


int isdir(filename)
char* filename;
{
    struct stat st;

    if (stat(filename,&st)) return 0; 
    if (!S_ISDIR(st.st_mode)) return 0;
    return 1;
}

#ifdef TEST
int isdirv(va_alist)
{
    va_list ap;
    struct stat st;
    char *p;
    va_start(ap);

    FILEBUF[0]='\0';
        while ((p = va_arg(ap, char *)) != (char *)0) {
        strcat(FILEBUF,p);
    }

    va_end(ap);
    return isdir(FILEBUF);
}
#endif

unsigned long  mtime(filename)
char* filename;
{
    struct stat st;
    if (stat(filename,&st)) return 0; 
        return st.st_mtime;
}

#ifdef TEST
unsigned long mtimev(va_alist)
{
    va_list ap;
    struct stat st;
    char *p;
    va_start(ap);

    FILEBUF[0]='\0';
        while ((p = va_arg(ap, char *)) != (char *)0) {
        strcat(FILEBUF,p);
    }

    va_end(ap);
    return mtime(FILEBUF);
}
#endif

unsigned long  atime(filename)
char *filename;
{
    struct stat st;
    if (stat(filename,&st)) return 0; 
        return st.st_atime;
}

#ifdef TEST
unsigned long atimev(va_alist)
{
    va_list ap;
    struct stat st;
    char *p;
    va_start(ap);

    FILEBUF[0]='\0';
        while ((p = va_arg(ap, char *)) != (char *)0) {
        strcat(FILEBUF,p);
    }

    va_end(ap);
    return atime(FILEBUF);
}
#endif

/*#undef TEST*/
#ifdef TEST
main(argc,argv)
int argc;
char **argv;
{
    int i;
    if (argc > 3) {
      if (isfilev(argv[1],argv[2],(char*)0))    printf("%s %s %s is file\n",argv[1],argv[2],argv[3]);
      if (isdirv(argv[1],argv[2],(char*)0)) printf("%s %s %s is dir\n",argv[1],argv[2],argv[3]);
      printf("mtime %d\n",mtimev(argv[1],argv[2],(char*)0));
      printf("atime %d\n",atimev(argv[1],argv[2],(char*)0));
    }
    printf("fileglue %s\n", fileglue("%s/%s","home",".test"));
}
#endif