checkfile.c

来自「agrep」· C语言 代码 · 共 105 行

C
105
字号
/* *  checkfile.c *    takes a file descriptor and checks to see if a file is a regular *    ascii file * */#include <stdio.h>#include <ctype.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include <errno.h>#include "checkfile.h"#define MAXLINE 512extern char Progname[];extern int errno;unsigned char ibuf[MAXLINE];/****************************************************************************    check_file*       input:  filename or path (null-terminated character string)*       returns: int (0 if file is a regular file, non-0 if not)**    uses stat(2) to see if a file is a regular file.****************************************************************************/int check_file(fname)char *fname;{struct stat buf;int ftype;  if (stat(fname, &buf) != 0) {    if (errno == ENOENT)      return NOSUCHFILE;    else      return STATFAILED;      } else {/*      if (S_ISREG(buf.st_mode)) {        if ((ftype = samplefile(fname)) == ISASCIIFILE) {          return ISASCIIFILE;        } else if (ftype == ISBINARYFILE) {          return ISBINARYFILE;        } else if (ftype == OPENFAILED) {          return OPENFAILED;        }      }      if (S_ISDIR(buf.st_mode)) {        return ISDIRECTORY;      }      if (S_ISBLK(buf.st_mode)) {        return ISBLOCKFILE;      }      if (S_ISSOCK(buf.st_mode)) {        return ISSOCKET;      }*/    }}/*****************************************************************************  samplefile*    reads in the first part of a file, and checks to see that it is*    all ascii.****************************************************************************//*int samplefile(fname)char *fname;{char *p;int numread;int fd;  if ((fd = open(fname, O_RDONLY)) == -1) {    fprintf(stderr, "open failed on filename %s\n", fname);    return OPENFAILED;  }  if (numread = read(fd, ibuf, MAXLINE)) {   close(fd);   p = ibuf;    while (isascii(*p++) && --numread);    if (!numread) {      return(ISASCIIFILE);    } else {      return(ISBINARYFILE);    }  } else {    close(fd);    return(ISASCIIFILE);  }}*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?