IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 41405


Ignore:
Timestamp:
Aug 25, 2020, 9:11:44 AM (6 years ago)
Author:
eugene
Message:

add -can-read, -can-write options to opihi file test

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/cmd.basic/file.c

    r7917 r41405  
    55  /* usage: file (filename) [var] */
    66
    7   int status, vstat;
     7  int status, vstat, N;
    88  struct stat fstats;
    99
    10   if (argc < 2) {
    11     gprint (GP_ERR, "USAGE: file (filename) [var]\n");
     10  int CAN_READ = FALSE;
     11  if ((N = get_argument (argc, argv, "-can-read"))) {
     12    remove_argument (N, &argc, argv);
     13    CAN_READ = TRUE;
     14  }
     15  int CAN_WRITE = FALSE;
     16  if ((N = get_argument (argc, argv, "-can-write"))) {
     17    remove_argument (N, &argc, argv);
     18    CAN_WRITE = TRUE;
     19  }
     20
     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");
    1224    return (FALSE);
     25  }
     26
     27  if (CAN_READ) {
     28    status = !access (argv[1], F_OK | R_OK);
     29    if (argc == 3) {
     30      set_int_variable (argv[2], status);
     31    } else {
     32      gprint (GP_ERR, "file %s can", argv[1]);
     33      if (!status) gprint (GP_ERR, "not");
     34      gprint (GP_ERR, " be read\n");
     35    }
     36    return TRUE;
     37  }
     38  if (CAN_WRITE) {
     39    status = !access (argv[1], F_OK | R_OK | W_OK);
     40    if (argc == 3) {
     41      set_int_variable (argv[2], status);
     42    } else {
     43      gprint (GP_ERR, "file %s can", argv[1]);
     44      if (!status) gprint (GP_ERR, "not");
     45      gprint (GP_ERR, " be written\n");
     46    }
     47    return TRUE;
    1348  }
    1449
     
    1853
    1954  if (argc == 3) {
    20      
    2155    set_int_variable (argv[2], vstat);
    22 
    2356  } else {
    24 
    2557    gprint (GP_ERR, "file %s is ", argv[1]);
    2658    if (!vstat) gprint (GP_ERR, "not ");
    2759    gprint (GP_ERR, "found\n");
    28    
    2960  }
    3061  return (TRUE);
Note: See TracChangeset for help on using the changeset viewer.