int main(int argc, char **argv) { if (argc < 2) return -1; if (strcmp(argv[1], "set") == 0) setTerm(); if (strcmp(argv[1], "restore") == 0) restoreTerm(); return 0; }
int main(int argc, char **argv) { if (argc < 2) return -1; if (strcmp(argv[1], "--set") == 0) setTerm(); if (strcmp(argv[1], "--restore") == 0) restoreTerm(); if (strcmp(argv[1], "--help") == 0) { printf("terminal tweaks\n"); printf("--set set non-buffered keyboard input\n"); printf("--restore revert to default settings\n"); } return 0; }
exitCmd(int argc, char **argv) { char *arg; fileStruct *fs; int mode=0; if( argc > 2 ) goto INVALID; arg = argv[1]; if( argc > 1 ) { /* Precheck arg */ if( strncasecmp(arg, "nosave", strlen(arg)) == 0 ) ; /* Don;t save any files */ else if( strcasecmp(arg, "abort") == 0 ) ; /* Don't save files or write init */ else if( strcasecmp(arg, "stop") == 0 ) ; /* Suspend */ else { /* Invalid */ INVALID: dingMsg("exit [nosave|abort|stop]"); updateCursor(globalData.activeWindow); return(0); } } /* Go thru all files that have been touched and save as necessary */ printf("\033[2J\033[1;1H\n\r"); restoreTerm(); globalData.mode = 0; /* So emsg just prints */ if( argc > 1 ) { if( strncasecmp(arg, "nosave", strlen(arg)) == 0 ) mode = 1; else if( strncasecmp(arg, "abort", strlen(arg)) == 0 ) goto SKIP; else if( strcasecmp(arg, "stop") == 0 ) { /* Can't seem to get timing right to restore the screen */ restoreTerm(); printf("\n"); /* Force a flush for restore screen */ sleep(1); kill(getpid(), SIGSTOP); sleep(1); setupTerm(); globalData.mode = 1; redrawScreen(); return(0); } } writeStartup(); if( mode == 1) goto SKIP; for(fs=globalData.fileList; fs; fs=fs->next) { if( fs->ro ) printf("Read only %s\n", fs->fileName); else if( fs->modified && !fs->nosave ) { printf("Saving %s\n", fs->fileName); if( fs->backupWritten == 0 && fs->created == 0) writeBackup(fs); writeFile(fs, fs->fileName, 0); } } SKIP: exit(0); }