file.c
上传用户:minyiyu
上传日期:2018-12-24
资源大小:864k
文件大小:3k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. #include <stdio.h>
  2. #include <sys/stat.h>
  3. #include <sys/types.h>
  4. #include <varargs.h>
  5. #define MAXARGS     100
  6. /*   isfile is called by
  7.  *   isfile(filenamecomp1, filecomp2,  filecomp3, ..., (char *)0);
  8.  *   extern "C" int isfile(const char *, const char *[]) ;
  9. */
  10. char    FILEBUF[4096];
  11. static char DOLLAR_[8192];
  12. char   *
  13. getstream(fp)
  14. FILE   *fp;
  15. {
  16. return fgets(DOLLAR_, sizeof(DOLLAR_) - 1, fp);
  17. }
  18. /*
  19.     The same as sprintf, but return the new string
  20.     fileglue("%s/%s",home,".newsrc");
  21. */
  22. char   *
  23. fileglue(va_alist)
  24. va_dcl
  25. {
  26. va_list ap;
  27. register char *fmt;
  28. static char *newstring;
  29. static char gluebuffer[8192];
  30. va_start(ap);
  31. fmt = va_arg(ap, char *);
  32. vsprintf(gluebuffer, fmt, ap);
  33. newstring = gluebuffer;
  34. va_end(ap);
  35. return newstring;
  36. }
  37. long
  38. filesize(filename)
  39. char   *filename;
  40. {
  41. struct stat st;
  42. if (stat(filename, &st))
  43. return 0;
  44. return st.st_size;
  45. }
  46. int 
  47. iszerofile(filename)
  48. char   *filename;
  49. {
  50. struct stat st;
  51. if (stat(filename, &st))
  52. return 0;
  53. if (st.st_size == 0)
  54. return 1;
  55. return 0;
  56. }
  57. int 
  58. isfile(filename)
  59. char   *filename;
  60. {
  61. struct stat st;
  62. if (stat(filename, &st))
  63. return 0;
  64. if (!S_ISREG(st.st_mode))
  65. return 0;
  66. return 1;
  67. }
  68. int 
  69. isfilev(va_alist)
  70. va_dcl
  71. {
  72. va_list ap;
  73. struct stat st;
  74. char   *p;
  75. va_start(ap);
  76. FILEBUF[0] = '';
  77. while ((p = va_arg(ap, char *)) != (char *) 0) {
  78. strcat(FILEBUF, p);
  79. }
  80. printf("file %sn", FILEBUF);
  81. va_end(ap);
  82. return isfile(FILEBUF);
  83. }
  84. int 
  85. isdir(filename)
  86. char   *filename;
  87. {
  88. struct stat st;
  89. if (stat(filename, &st))
  90. return 0;
  91. if (!S_ISDIR(st.st_mode))
  92. return 0;
  93. return 1;
  94. }
  95. int 
  96. isdirv(va_alist)
  97. va_dcl
  98. {
  99. va_list ap;
  100. struct stat st;
  101. char   *p;
  102. va_start(ap);
  103. FILEBUF[0] = '';
  104. while ((p = va_arg(ap, char *)) != (char *) 0) {
  105. strcat(FILEBUF, p);
  106. }
  107. va_end(ap);
  108. return isdir(FILEBUF);
  109. }
  110. unsigned long 
  111. mtime(filename)
  112. char   *filename;
  113. {
  114. struct stat st;
  115. if (stat(filename, &st))
  116. return 0;
  117. return st.st_mtime;
  118. }
  119. unsigned long 
  120. mtimev(va_alist)
  121. va_dcl
  122. {
  123. va_list ap;
  124. struct stat st;
  125. char   *p;
  126. va_start(ap);
  127. FILEBUF[0] = '';
  128. while ((p = va_arg(ap, char *)) != (char *) 0) {
  129. strcat(FILEBUF, p);
  130. }
  131. va_end(ap);
  132. return mtime(FILEBUF);
  133. }
  134. unsigned long 
  135. atime(filename)
  136. char   *filename;
  137. {
  138. struct stat st;
  139. if (stat(filename, &st))
  140. return 0;
  141. return st.st_atime;
  142. }
  143. unsigned long 
  144. atimev(va_alist)
  145. va_dcl
  146. {
  147. va_list ap;
  148. struct stat st;
  149. char   *p;
  150. va_start(ap);
  151. FILEBUF[0] = '';
  152. while ((p = va_arg(ap, char *)) != (char *) 0) {
  153. strcat(FILEBUF, p);
  154. }
  155. va_end(ap);
  156. return atime(FILEBUF);
  157. }
  158. /*#undef TEST*/
  159. #ifdef TEST
  160. main(argc, argv)
  161. int     argc;
  162. char  **argv;
  163. {
  164. int     i;
  165. if (argc > 3) {
  166. if (isfilev(argv[1], argv[2], (char *) 0))
  167. printf("%s %s %s is filen", argv[1], argv[2], argv[3]);
  168. if (isdirv(argv[1], argv[2], (char *) 0))
  169. printf("%s %s %s is dirn", argv[1], argv[2], argv[3]);
  170. printf("mtime %dn", mtimev(argv[1], argv[2], (char *) 0));
  171. printf("atime %dn", atimev(argv[1], argv[2], (char *) 0));
  172. }
  173. printf("fileglue %sn", fileglue("%s/%s", "home", ".test"));
  174. }
  175. #endif