/* ---------- */ /* najifrmt.c */ /* ---------- */ /* naji file format functions */ /* this .c file is a part */ /* of libnaji version 0.6.1 */ /* libnaji is based on */ /* the original najitool */ /* both najitool and libnaji */ /* are public domain and are */ /* made by the same author */ /* please read license.txt */ /* made by NECDET COKYAZICI */ /* charaftr and charbefr */ /* made by SELCUK OZDOGAN */ /* strbline and streline */ /* made by POLIKARP */ /* bremline, eremline */ /* made by SACHIN MANE */ #include "libnaji.h" void charwrap(int w, char *namein, char *nameout) { int a; int b; najin(namein); najout(nameout); b=0; loop { a = fgetc(naji_input); if (a == EOF) endloop; b++; if (b == w || a == '\n') { fputc('\n', naji_output); b=0; } fputc(a, naji_output); } najinclose(); najoutclose(); } void wordwrap(char *namein, char *nameout) { int i; int a; int b; najin(namein); najout(nameout); b=0; loop { a = fgetc(naji_input); if (a == EOF) endloop; b++; if (a == '\n') b=0; for (i=0; i<14; i++) if ( (b == 65+i) && ( a == ' ' || a == '-' || a == '+' || a == '_' || a == '/' || a == '\\' ) ) { fputc('\n', naji_output); b=0; break; } fputc(a, naji_output); } najinclose(); najoutclose(); } void numlines(char *namein, char *nameout) { int a; unsigned long line = 1; najin(namein); najout(nameout); fprintf(naji_output, "%lu ", line); loop { a = fgetc(naji_input); if (a == EOF) endloop; if (a == '\n') { line++; fprintf(naji_output, "\n%lu ", line); } else fputc(a, naji_output); } najinclose(); najoutclose(); } void charaftr(char *namein, char *nameout, char ch) { int a; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; fputc(a, naji_output); fputc(ch, naji_output); } najinclose(); najoutclose(); } void charbefr(char *namein, char *nameout, char ch) { int a; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; fputc(ch, naji_output); fputc(a, naji_output); } najinclose(); najoutclose(); } void rbcafter(char *namein, char *nameout) { int a; rand_init(); najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; fputc(a, naji_output); fputc(rand() % 255, naji_output); } najinclose(); najoutclose(); } void rbcbefor(char *namein, char *nameout) { int a; rand_init(); najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; fputc(rand() % 255, naji_output); fputc(a, naji_output); } najinclose(); najoutclose(); } void rtcafter(char *namein, char *nameout) { int a; rand_init(); najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; fputc(a, naji_output); fputc( ( (rand() % 95)+' ' ), naji_output); } najinclose(); najoutclose(); } void rtcbefor(char *namein, char *nameout) { int a; rand_init(); najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; fputc( ( (rand() % 95)+' ' ), naji_output); fputc(a, naji_output); } najinclose(); najoutclose(); } void strbline(char *namein, char *nameout, char *str) { char buffer[4096]; najin(namein); najout(nameout); *buffer = '\0'; while(fgets(buffer, sizeof(buffer), naji_input)) { fprintf(naji_output, "%s%s", str, buffer); *buffer = '\0'; } najinclose(); najoutclose(); } void streline(char *namein, char *nameout, char *str) { char buffer[4096]; char lastchar=0; najin(namein); najout(nameout); *buffer = '\0'; while(fgets(buffer, sizeof(buffer), naji_input)) { lastchar = buffer[strlen(buffer)-1]; buffer[strlen(buffer)-1] ='\0'; fprintf(naji_output, "%s%s%c", buffer, str, lastchar); *buffer = '\0'; } najinclose(); najoutclose(); } void swapfeb(char *namein, char *namein2, char *nameout) { int a; int b; najin(namein); najin2(namein2); najout(nameout); while(1) { a = fgetc(naji_input); fgetc(naji_input2); b = fgetc(naji_input2); fgetc(naji_input); if (a == EOF) break; if (b == EOF) break; fputc(a, naji_output); fputc(b, naji_output); } najinclose(); najin2close(); najoutclose(); } void filbreed(char *namein, char *namein2, char *nameout) { int a; int b; najin(namein); najin2(namein2); najout(nameout); while(1) { a = fgetc(naji_input); b = fgetc(naji_input2); if (a == EOF) break; if (b == EOF) break; fputc(a, naji_output); fputc(b, naji_output); } najinclose(); najin2close(); najoutclose(); } void wordline(char *namein, char *nameout) { int a; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; if (a == ' ') a = '\n'; fputc(a, naji_output); } najinclose(); najoutclose(); } void bremline(char *str, char *namein, char *nameout) { char *tempbuf = NULL; int len; int a = 0; int i = 0; int cnt = 0; int pos = 0; len = strlen(str); tempbuf = (char *) calloc(len + 1, sizeof (char)); if (tempbuf == NULL) { fprintf(stderr, "\n\nError, cannot allocate memory"); perror(" "); fprintf(stderr, "\n\n"); exit(2); } najin(namein); najout(nameout); while (1) { a = fgetc(naji_input); if (a == EOF) { for (i=0; i<cnt ; i++) fputc(tempbuf[i], naji_output); fputc('\n', naji_output); break; } if (a == '\n') { /* Print the temp buffer */ for (i=0; i<cnt; i++) fputc(tempbuf[i], naji_output); fputc('\n', naji_output); pos = 0; cnt = 0; continue; } tempbuf[pos % len] = a; pos++; cnt++; if (cnt == len) { if (!isequal(str, tempbuf, len, pos % len)) { for (i=0; i<cnt; i++) fputc(tempbuf[i], naji_output); /* Print remaing line */ while (1) { a = fgetc(naji_input); if (a == EOF || a == '\n') break; fputc(a, naji_output); } fputc('\n', naji_output); } else { /* Skip this line */ while (1) { a = fgetc(naji_input); if (a == EOF || a == '\n') break; } } pos = 0; cnt = 0; } } najinclose(); najoutclose(); } /* Memory will be allocated for the line buffer as a block size of 100. The number 100 is taken because normally the line size is 80 characters. In best case scenario this function will not have to reallocate memory for the line. In other cases this function keeps on increasing the buffer size by BLOCK_SIZE as and when required. */ void eremline(char *str, char *namein, char *nameout) { const int BLOCK_SIZE = 100; char *line_buf = NULL; int cur_buf_size = 0; int a; int x; int i = 0; int j = 0; int len = 0; int buf_len; len = strlen(str); /* Allocate a block of memory for the line buffer. This buffer can grow as and when required. */ line_buf = (char *) calloc(BLOCK_SIZE, sizeof(char)); if (line_buf == NULL) { fprintf(stderr, "\n\nError, cannot allocate memory"); perror(" "); fprintf(stderr, "\n\n"); exit(2); } cur_buf_size = BLOCK_SIZE; najin(namein); najout(nameout); while (1) { a = fgetc(naji_input); if (a == '\r') a = fgetc(naji_input); if (a == '\n' || a == EOF) { line_buf = addtolinebuf('\0', line_buf, i, &cur_buf_size, BLOCK_SIZE); if (line_buf == NULL) break; if (strlen(line_buf) < len) { fputs(line_buf, naji_output); if (a != EOF) fputc('\n', naji_output); } else { buf_len = strlen(line_buf); j = 0; for (x = (buf_len - len); x < buf_len; x++) { if (line_buf[x] != str[j]) break; j++; } if (x == buf_len) { } else { fputs(line_buf, naji_output); if (a != EOF) fputc('\n', naji_output); } } line_buf[0] = '\0'; i = 0; if (a == EOF) break; else continue; } else { line_buf = addtolinebuf(a, line_buf, i, &cur_buf_size, BLOCK_SIZE); if (line_buf == NULL) break; i++; } } free(line_buf); najinclose(); najoutclose(); } void remline(char *str, char *namein, char *nameout) { long pos; int i; int c; char *line; najin(namein); najout(nameout); pos = ftell(naji_input); c = fgetc(naji_input); /* line by line */ while (c != EOF) { for (i=0; (c != EOF) && (c != '\n') && (c != '\0'); i++) c = fgetc(naji_input); if (i > 0) { line = (char*) malloc (sizeof(char)*i+1); fseek(naji_input, pos, SEEK_SET); fgets(line, (i+1), naji_input); if (strstr(line, str) == NULL) fprintf(naji_output, "%s\n", line); free(line); } pos = ftell(naji_input); c = fgetc(naji_input); } najinclose(); najoutclose(); } void skpalnum(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (isalnum(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void skpalpha(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (isalpha(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void skpcntrl(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (iscntrl(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void skpdigit(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (isdigit(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void skpgraph(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (isgraph(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void skplower(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (islower(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void skpprint(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (isprint(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void skppunct(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (ispunct(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void skpspace(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (isspace(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void skpupper(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (isupper(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void skpxdigt(char *namein, char *nameout) { int skip = NAJI_FALSE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; skip = NAJI_FALSE; if (isxdigit(a)) skip = NAJI_TRUE; if (skip == NAJI_FALSE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onlalnum(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (isalnum(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onlalpha(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (isalpha(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onlcntrl(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (iscntrl(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onldigit(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (isdigit(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onlgraph(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (isgraph(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onllower(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (islower(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onlprint(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (isprint(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onlpunct(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (ispunct(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onlspace(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (isspace(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onlupper(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (isupper(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void onlxdigt(char *namein, char *nameout) { int show = NAJI_TRUE; int a=0; najin(namein); najout(nameout); loop { a = fgetc(naji_input); if (a == EOF) endloop; show = NAJI_FALSE; if (isxdigit(a)) show = NAJI_TRUE; if (show == NAJI_TRUE) fputc(a, naji_output); } najinclose(); najoutclose(); } void tothe(char *str) { int i; int l; l = strlen(str); for (i=0; i<(l-1); i++) { printf("%c to the", str[i]); if (i == (l-1) ) break; putchar(' '); } putchar(str[l-1]); } void ftothe(char *namein, char *nameout) { int a; int i; long l; najin(namein); najout(nameout); l = najinsize(); for (i=0; i<(l-1); i++) { a = fgetc(naji_input); fprintf(naji_output, "%c to the", a); if (i == (l-1)) break; fputc(' ', naji_output); } a = fgetc(naji_input); fputc(a, naji_output); najinclose(); najoutclose(); } void strachar(char *str, char *namein, char *nameout) { int a; najin(namein); najout(nameout); while(1) { a = fgetc(naji_input); if (a == EOF) break; fputc(a, naji_output); fprintf(naji_output, str); } najinclose(); najoutclose(); } void strbchar(char *str, char *namein, char *nameout) { int a; najin(namein); najout(nameout); while(1) { a = fgetc(naji_input); if (a == EOF) break; fprintf(naji_output, str); fputc(a, naji_output); } najinclose(); najoutclose(); } void rstrach(int len, char *namein, char *nameout) { int a; int i; najin(namein); najout(nameout); while(1) { a = fgetc(naji_input); if (a == EOF) break; fputc(a, naji_output); for (i=0; i<len; i++) fputc(((rand() % 95)+' '), naji_output); } najinclose(); najoutclose(); } void rstrbch(int len, char *namein, char *nameout) { int a; int i; najin(namein); najout(nameout); while(1) { a = fgetc(naji_input); if (a == EOF) break; for (i=0; i<len; i++) fputc(((rand() % 95)+' '), naji_output); fputc(a, naji_output); } najinclose(); najoutclose(); } void cpfroml(unsigned long line, char *namein, char *nameout) { int a; unsigned long cnt = 0; if (line <= 0) return; line -= 1; najin(namein); najout(nameout); while (cnt != line) { a = fgetc(naji_input); if (a == EOF) break; if (a == '\n') cnt++; } if (cnt == line) { a = fgetc(naji_input); if (a == EOF) { najinclose(); najoutclose(); return; } if (a != '\r') fputc(a, naji_output); while (1) { a = fgetc(naji_input); if (a == EOF) break; fputc(a, naji_output); } } najinclose(); najoutclose(); } void cptiline(unsigned long line, char *namein, char *nameout) { int a; unsigned long cnt = 0; if (line <= 0) return; najin(namein); najout(nameout); while (1) { a = fgetc(naji_input); if (a == EOF) break; if (a == '\n') cnt++; if (cnt == line) { a = fgetc(naji_input); if (a == EOF) break; if (a == '\r') fputc(a, naji_output); break; } fputc(a, naji_output); } najinclose(); najoutclose(); }