void editfile (list_ref list, char *filename) { char stdinline[1024]; int stdincount = 0; for(;; ++stdincount) { printf ("%s: ", Exec_Name); char *linepos = fgets (stdinline, sizeof stdinline, stdin); if (linepos == NULL) break; if (want_echo) printf ("%s", stdinline); linepos = strchr (stdinline, '\n'); if (linepos == NULL || stdinline[0] == '\0') { badline (stdincount, stdinline); }else { *linepos = '\0'; switch (stdinline[0]) { case '$': setmove_list(list, MOVE_LAST, stdinline); break; case '*': print_all(list, stdinline); break; case '.': viewcurr_list(list, stdinline); break; case '0': setmove_list(list, MOVE_HEAD, stdinline); break; case '<': setmove_list(list, MOVE_PREV, stdinline); break; case '>': setmove_list(list, MOVE_NEXT, stdinline); break; case '@': debugdump_list (list, stdinline); break; case 'a': insert_line_after (list, stdinline+1); break; case 'd': delete_list(list, stdinline); break; case 'i': insert_line_before(list, stdinline+1); break; case 'r': insertfile(list, stdinline+1); break; case 'w': writefile (list, stdinline+1, filename); break; default : badline (stdincount, stdinline); } } } printf("%s\n", "^D"); }
void editfile( struct options *options, list_ref list ){ char stdinline[1024]; char *operand = NULL; int stdincount = 0; int lineCount = 0; char *linepos = NULL; for(;;){ if(!options->s_opt_silent) printf("%s: ", progname); linepos = fgets( stdinline, sizeof stdinline, stdin ); if( linepos == NULL ) break; if(options->e_opt_echo && !options->s_opt_silent) printf("%s",stdinline); linepos = strchr( stdinline, '\n' ); if( linepos == NULL || stdinline[0] == '\0' ){ badline( stdincount, stdinline ); }else{ *linepos = '\0'; operand=stdinline+1; switch( stdinline[0] ){ case '$': if(stdinline[1] != '\0') { badline(stdincount, stdinline); break; } lastLine(list, options); break; case '*': if(stdinline[1] != '\0') { badline(stdincount, stdinline); break; } printAll(list, options); break; case '.': if(stdinline[1] != '\0') { badline(stdincount, stdinline); break; } printCurr(list, options); break; case '0': if(stdinline[1] != '\0') { badline(stdincount, stdinline); break; } firstLine(list, options); break; case '<': if(stdinline[1] != '\0') { badline(stdincount, stdinline); break; } prevLine(list, options); break; case '>': if(stdinline[1] != '\0') { badline(stdincount, stdinline); break; } nextLine(list, options); break; case '@': if(stdinline[1] != '\0') { badline(stdincount, stdinline); break; } debugdump_list( list ); break; case 'a': insertAfter(list, operand, options); break; case 'd': if(stdinline[1] != '\0') { badline(stdincount, stdinline); break; } deleteLine(list, options); break; case 'i': insertBefore(list, operand, options); break; case 'r': lineCount = readFile(list, operand, options); if(lineCount>=0 && !options->s_opt_silent) printf("%s: %d lines read.\n", progname, lineCount); break; case 'w': lineCount = writeFile(list, operand, options); if(lineCount>=0 && !options->s_opt_silent) printf("%s: %d lines written to %s\n", progname, lineCount, operand); break; default : badline( stdincount, stdinline ); }; }; ++stdincount; }; if(!options->s_opt_silent) printf("\n"); }
void editfile (list_ref list) { char stdinline[1024]; int stdincount = 0; for(;; ++stdincount) { printf ("%s: ", Exec_Name); char *linepos = fgets (stdinline, sizeof stdinline, stdin); if(isspace(stdinline[0]) != 0) { continue; } if (linepos == NULL) break; if (want_echo) printf ("%s", stdinline); linepos = strchr (stdinline, '\n'); if (linepos == NULL || stdinline[0] == '\0') { badline (stdincount, stdinline); } else { *linepos = '\0'; switch (stdinline[0]) { case '$': setmove_list (list, MOVE_LAST); break; case '*': print_list(list); break; case '.': printf("%6d: %s\n",counter(list, curr), viewcurr_list (list)); break; case '0': setmove_list (list, MOVE_HEAD); break; case '<': setmove_list (list, MOVE_PREV); break; case '>': setmove_list (list, MOVE_NEXT); break; case '@': debugdump_list (list); break; case 'a': insertAfter(list, stdinline+1, curr); break; case 'd': delete_list (list); break; case 'i': insertBefore(list, stdinline+1); break; case 'r': putfilelist (list, stdinline+1, 0); break; case 'w': putfilelist (list, stdinline+1, 2); break; case '#': break; default : badline (stdincount, stdinline); } } } printf (" ^D\n"); }
/*Edit file function-------------------------------------------------*/ void Editfile(list_ref list) { char stdinline[4096]; int stdincount; for (stdincount = 0;; ++stdincount) { //print program basename printf("%s: ", Exec_Name); //change this before submitting //get string from file char *linepos = fgets(stdinline, sizeof (stdinline), stdin); //if EOF break and put EOF key if (linepos == NULL) { printf("^D\n"); break; } //chomp newline char *nlinepos = strchr(stdinline, '\n'); if (nlinepos != NULL) *nlinepos = '\0'; //echo print to terminal if (want_echo) printf("%s", stdinline); //check for a line of all spaces bool space = SpaceCheck(stdinline); //check for badline //if a line of all spaces then go to next iteration if (space) { stdincount--; continue; //if not newline terminated or empty string then badline } else if (linepos == NULL || stdinline[0] == '\0') { Badline(Exec_Name, stdinline); //goodline so check for commands and lines } else { char *inputline; //used for commands that require an argument switch (stdinline[0]) { case '#': continue; break; case '$': Com$(list); break; case '*': viewlist(list); break; case '.': ComDot(list); break; case '0': Com0(list); break; case '<': ComL(list); break; case '>': ComR(list); break; case '@': debugdump_list(list); break; case 'a': ComA(list, inputline, stdinline); break; case 'd': if (lsize(list) > 0) delete_list(list); break; case 'i': ComI(list, inputline, stdinline); break; case 'r': break; case 'w': break; default: Badline(Exec_Name, stdinline); break; } } } }