Changeset 41489 for trunk/Ohana/src/opihi/cmd.basic/file.c
- Timestamp:
- Feb 9, 2021, 10:49:12 AM (5 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/cmd.basic/file.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.basic/file.c
r41405 r41489 8 8 struct stat fstats; 9 9 10 if ((N = get_argument (argc, argv, "-h"))) goto usage; 11 if ((N = get_argument (argc, argv, "-help"))) goto usage; 12 10 13 int CAN_READ = FALSE; 11 14 if ((N = get_argument (argc, argv, "-can-read"))) { … … 15 18 int CAN_WRITE = FALSE; 16 19 if ((N = get_argument (argc, argv, "-can-write"))) { 20 if (CAN_READ) goto badopts; 17 21 remove_argument (N, &argc, argv); 18 22 CAN_WRITE = TRUE; 19 23 } 24 int GET_STATS = FALSE; 25 if ((N = get_argument (argc, argv, "-stats"))) { 26 if (CAN_READ || CAN_WRITE) goto badopts; 27 remove_argument (N, &argc, argv); 28 GET_STATS = TRUE; 29 } 20 30 21 if ((argc < 2) || (CAN_READ && CAN_WRITE)) { 22 gprint (GP_ERR, "USAGE: file (filename) [var] [-can-read] [-can-write]\n"); 23 gprint (GP_ERR, " NOTE: only one of -can-read or -can-write is allowed\n"); 24 return (FALSE); 25 } 31 if ((argc != 2) && (argc != 3)) goto usage; 26 32 27 33 if (CAN_READ) { … … 30 36 set_int_variable (argv[2], status); 31 37 } else { 32 gprint (GP_ ERR, "file %s can", argv[1]);33 if (!status) gprint (GP_ ERR, "not");34 gprint (GP_ ERR, " be read\n");38 gprint (GP_LOG, "file %s can", argv[1]); 39 if (!status) gprint (GP_LOG, "not"); 40 gprint (GP_LOG, " be read\n"); 35 41 } 36 42 return TRUE; … … 41 47 set_int_variable (argv[2], status); 42 48 } else { 43 gprint (GP_ ERR, "file %s can", argv[1]);44 if (!status) gprint (GP_ ERR, "not");45 gprint (GP_ ERR, " be written\n");49 gprint (GP_LOG, "file %s can", argv[1]); 50 if (!status) gprint (GP_LOG, "not"); 51 gprint (GP_LOG, " be written\n"); 46 52 } 47 53 return TRUE; … … 50 56 status = stat (argv[1], &fstats); 51 57 52 vstat = !status; 58 if (!GET_STATS) { 59 vstat = !status; 60 61 if (argc == 3) { 62 set_int_variable (argv[2], vstat); 63 } else { 64 gprint (GP_LOG, "file %s is ", argv[1]); 65 if (!vstat) gprint (GP_LOG, "not "); 66 gprint (GP_LOG, "found\n"); 67 } 68 return (TRUE); 69 } 70 71 int TimeFormat; 72 time_t TimeReference; 73 74 // use the variable to set the stats fields 75 GetTimeFormat (&TimeReference, &TimeFormat); 53 76 54 77 if (argc == 3) { 55 set_int_variable (argv[2], vstat); 78 char varname[1024]; 79 80 snprintf (varname, 1024, "%s:devID", argv[2]); set_int_variable (varname, fstats.st_dev); 81 snprintf (varname, 1024, "%s:inode", argv[2]); set_int_variable (varname, fstats.st_ino); 82 snprintf (varname, 1024, "%s:mode", argv[2]); set_int_variable (varname, fstats.st_mode); 83 snprintf (varname, 1024, "%s:nlink", argv[2]); set_int_variable (varname, fstats.st_nlink); 84 snprintf (varname, 1024, "%s:uid", argv[2]); set_int_variable (varname, fstats.st_uid); 85 snprintf (varname, 1024, "%s:gid", argv[2]); set_int_variable (varname, fstats.st_gid); 86 snprintf (varname, 1024, "%s:rdev", argv[2]); set_int_variable (varname, fstats.st_rdev); 87 snprintf (varname, 1024, "%s:size", argv[2]); set_int_variable (varname, fstats.st_size); 88 snprintf (varname, 1024, "%s:blksize", argv[2]); set_int_variable (varname, fstats.st_blksize); 89 snprintf (varname, 1024, "%s:blocks", argv[2]); set_int_variable (varname, fstats.st_blocks); 90 91 snprintf (varname, 1024, "%s:atime", argv[2]); set_variable (varname, TimeValue (fstats.st_atim.tv_sec, TimeReference, TimeFormat)); 92 snprintf (varname, 1024, "%s:mtime", argv[2]); set_variable (varname, TimeValue (fstats.st_mtim.tv_sec, TimeReference, TimeFormat)); 93 snprintf (varname, 1024, "%s:ctime", argv[2]); set_variable (varname, TimeValue (fstats.st_ctim.tv_sec, TimeReference, TimeFormat)); 56 94 } else { 57 gprint (GP_ERR, "file %s is ", argv[1]); 58 if (!vstat) gprint (GP_ERR, "not "); 59 gprint (GP_ERR, "found\n"); 95 gprint (GP_LOG, "devID : %d\n", (int) fstats.st_dev); 96 gprint (GP_LOG, "inode : %d\n", (int) fstats.st_ino); 97 gprint (GP_LOG, "mode : %o\n", (int) fstats.st_mode); 98 gprint (GP_LOG, "nlink : %d\n", (int) fstats.st_nlink); 99 gprint (GP_LOG, "uid : %d\n", (int) fstats.st_uid); 100 gprint (GP_LOG, "gid : %d\n", (int) fstats.st_gid); 101 gprint (GP_LOG, "rdev : %d\n", (int) fstats.st_rdev); 102 gprint (GP_LOG, "size : %d\n", (int) fstats.st_size); 103 gprint (GP_LOG, "blksize : %d\n", (int) fstats.st_blksize); 104 gprint (GP_LOG, "blocks : %d\n", (int) fstats.st_blocks); 105 106 char *adate = ohana_sec_to_date (fstats.st_atim.tv_sec); 107 gprint (GP_LOG, "atime : %s\n", adate); 108 free (adate); 109 110 char *mdate = ohana_sec_to_date (fstats.st_mtim.tv_sec); 111 gprint (GP_LOG, "mtime : %s\n", mdate); 112 free (mdate); 113 114 char *cdate = ohana_sec_to_date (fstats.st_ctim.tv_sec); 115 gprint (GP_LOG, "ctime : %s\n", cdate); 116 free (cdate); 60 117 } 61 return (TRUE); 118 return TRUE; 119 120 badopts: 121 gprint (GP_ERR, " NOTE: only one (or none) of -can-read, -can-write, -stats is allowed\n"); 122 123 usage: 124 gprint (GP_ERR, "USAGE: file [var] [-can-read] [-can-write] [-stats]\n"); 125 gprint (GP_ERR, " by default, reports if file exists\n"); 126 gprint (GP_ERR, " -can-read: reports if file exists and can be read\n"); 127 gprint (GP_ERR, " -can-write: reports if file exists and can be written to\n"); 128 gprint (GP_ERR, " -stats: reports if file exists and can be written to\n"); 129 return FALSE; 62 130 } 63 131
Note:
See TracChangeset
for help on using the changeset viewer.
