home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / qc_prog / chap10 / fmenu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-04-06  |  2.1 KB  |  87 lines

  1. /* fmenu.c  --  demonstrates file renaming, etc. */
  2.  
  3. #include <direct.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6.  
  7. #define MAXPATH (80)
  8. char From_name[MAXPATH],
  9.      To_name[MAXPATH];
  10.  
  11. int Input(char *prompt, char buf[])
  12. {
  13.     printf("%s: ", prompt);
  14.     if (gets(buf) == NULL || *buf == '\0')
  15.         return (0);
  16.     return (1);
  17. }
  18. void Rename(void)
  19. {
  20.     printf("->Rename/move\n");
  21.     if (!Input("From", From_name)) return;
  22.     if (!Input("To", To_name)) return;
  23.     if (rename(From_name, To_name) != 0)
  24.         perror("RENAME");
  25.     else
  26.         printf("Renamed: \"%s\" -> \"%s\"\n", 
  27.                 From_name, To_name);
  28. }
  29. void Remove(void)
  30. {
  31.     printf("->Remove\n");
  32.     if (!Input("Remove", From_name)) return;
  33.     if (!Input("Are You Sure", To_name)) return;
  34.     if (*To_name != 'y' && *To_name != 'Y')
  35.         return;
  36.     if (remove(From_name) != 0)
  37.         perror(From_name);
  38.     else
  39.         printf("Removed: \"%s\"\n", From_name);
  40. }
  41. void Maketemp(void)
  42. {
  43.     printf("->Maketemp\n");
  44.     if (!Input("In What Directory", From_name))
  45.         return;
  46.     (void)strcat(From_name, "\\XXXXXX");
  47.     if (mktemp(From_name) == NULL)
  48.         printf("Can't create a unique name.\n");
  49.     else
  50.         printf("Created: \"%s\"\n", From_name);
  51. }
  52. void Quit(void)
  53. {
  54.     printf("->Quit\n");
  55.     if (!Input("Are You Sure", From_name))
  56.         return;
  57.     if (*From_name != 'y' && *From_name != 'Y')
  58.         return;
  59.     exit(0);
  60. }
  61.  
  62. main()
  63. {
  64.     static void (*doit[])() = {Rename, Remove, Maketemp, Quit};
  65.     int ch;
  66.  
  67.     while (1)
  68.         {
  69.         printf("--------------------------------------------\n");
  70.         printf("1) Rename/move a file or rename a directory.\n");
  71.         printf("2) Remove a file.\n");
  72.         printf("3) Make a unique temporary file.\n");
  73.         printf("4) Quit.\n");
  74.         printf("--------------------------------------------\n");
  75.         printf("Select: ");
  76.  
  77.         do
  78.             {
  79.             ch = getchar();
  80.             } while (ch < '1' || ch > '4');
  81.         getchar();    /* gobble trailing newline */
  82.         printf("%c\n\n", ch);
  83.         ch -= '1';
  84.         doit[ch]();
  85.         }
  86. }
  87.