summaryrefslogblamecommitdiffstats
path: root/innbbsd/file.c
blob: 29b6384acba0950c6dc62d7cb551fda062deba04 (plain) (tree)
1
2
3
4
5
6
7
8
9
10


                      
                   

                       



                                                                        

 
                              

 



                              
 
                                                   


  


                                                 
 

                       
 

                                     



                                  

 
    
                  
                             
 
                       
 


                            

 


                             
 
                       
 
                            
                 


                        

 


                             
 
                       
 




                             

 
           

                 
 












                                                   
 
      

 


                             
 
                       
 




                             

 
           

                
 











                                                   
 
      
 


                             
 



                            

 
           

                
 











                                                   
 
      
 


                             
 



                            

 
           

                
 











                                                   
 
      
 
                 
           


                         
 









                                                                    

      
#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