From 92f2d5dbe5e046efc21888c53670fb94624f61dd Mon Sep 17 00:00:00 2001 From: Chris Nutter Date: Fri, 17 May 2019 20:52:52 -0700 Subject: [PATCH] here u go --- .DS_Store | Bin 0 -> 6148 bytes diff-rcm | Bin 36000 -> 23216 bytes diff-rcm.dSYM/Contents/Info.plist | 20 ++ .../Contents/Resources/DWARF/diff-rcm | Bin 0 -> 21836 bytes diff.c | 83 ++++---- diff.h | 2 +- left.txt | 25 --- pa.c | 198 +++++++++++------- pa.h | 22 +- right.txt | 31 --- 10 files changed, 201 insertions(+), 180 deletions(-) create mode 100644 .DS_Store create mode 100644 diff-rcm.dSYM/Contents/Info.plist create mode 100644 diff-rcm.dSYM/Contents/Resources/DWARF/diff-rcm delete mode 100644 left.txt delete mode 100644 right.txt diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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 diff --git a/diff-rcm.dSYM/Contents/Info.plist b/diff-rcm.dSYM/Contents/Info.plist new file mode 100644 index 0000000..f39ac94 --- /dev/null +++ b/diff-rcm.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.diff-rcm + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/diff-rcm.dSYM/Contents/Resources/DWARF/diff-rcm b/diff-rcm.dSYM/Contents/Resources/DWARF/diff-rcm new file mode 100644 index 0000000000000000000000000000000000000000..b49374bd20cf193886ca5e6ec403ffb226f4d0cd GIT binary patch literal 21836 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\n\n"); } -int normal(const char* filename1, const char* filename2) { +int standard(const char* filename1, const char* filename2) { identical(filename1, filename2); - printf("\nTHIS IS NOT NORMAL FOR NOW. THIS IS PLACEHOLDER. MMKAY.\n"); - printf("THIS IS NOT NORMAL FOR NOW. THIS IS PLACEHOLDER. MMKAY.\n"); - printf("THIS IS NOT NORMAL FOR NOW. THIS IS PLACEHOLDER. MMKAY.\n"); - printf("THIS IS NOT NORMAL FOR NOW. THIS IS PLACEHOLDER. MMKAY.\n\n"); + printf("\nTHIS IS NOT standard FOR NOW. THIS IS PLACEHOLDER. MMKAY.\n"); + printf("THIS IS NOT standard FOR NOW. THIS IS PLACEHOLDER. MMKAY.\n"); + printf("THIS IS NOT standard FOR NOW. THIS IS PLACEHOLDER. MMKAY.\n"); + printf("THIS IS NOT standard FOR NOW. THIS IS PLACEHOLDER. MMKAY.\n\n"); - //pa_print(p, printnormal); + //pa* qlast = q; return 0; } + int sideside(const char* filename1, const char* filename2) { - - pa* qlast = q; - while (p != NULL) { - qlast = q; - foundmatch = 0; - while (q != NULL && (foundmatch = pa_equal(p, q)) == 0) { q = pa_next(q); } - q = qlast; - - if (foundmatch) { - while ((foundmatch = pa_equal(p, q)) == 0) { - pa_print(q, printright); - q = pa_next(q); + + pa* qlast = q; + + while(p != NULL) { + qlast = q; - } - pa_print(q, printboth); - p = pa_next(p); - q = pa_next(q); - } else { - pa_print(p, printleft); - p = pa_next(p); + foundmatch = 0; + + while (q != NULL && (foundmatch = pa_equal(p, q)) == 0) { q = pa_next(q); } + q = qlast; + + if (foundmatch) { + while ((foundmatch = pa_equal(p, q)) == 0) { + pa_print(q, NULL, printright); + q = pa_next(q); + qlast = q; + } + + if (showleftcolumn) { pa_print(p, q, printnocommon); } + else if (suppresscommon) { pa_print(p, q, printleftparen); } + else { pa_print(p, q, printboth); } + + p = pa_next(p); + q = pa_next(q); + } + + else { pa_print(p, NULL, printleft); p = pa_next(p); } } - } - while (q != NULL) { - pa_print(q, printright); - q = pa_next(q); - } - - return 0; + + while(q != NULL) { pa_print(q, NULL, printright); q = pa_next(q); } + + return 0; + } + void quiet(const char* filename1, const char* filename2) { if (pa_equal(p, q) == 0) { printf("The files are not the same.\n"); } else { return; } } void loud(const char* filename1, const char* filename2) { if (*filename1 == *filename2 || (pa_equal(p, q) != 0)) { printf("The files are identical.\n"); } - else { normal(files[0], files[1]); } + else { standard(files[0], files[1]); } } diff --git a/diff.h b/diff.h index a7d79be..d6e7b7d 100644 --- a/diff.h +++ b/diff.h @@ -49,7 +49,7 @@ void loadfiles(const char* filename1, const char* filename2); void version(); void help(); -int normal(const char* filename1, const char* filename2); +int standard(const char* filename1, const char* filename2); int sideside(const char* filename1, const char* filename2); void quiet(const char* filename1, const char* filename2); void loud(const char* filename1, const char* filename2); diff --git a/left.txt b/left.txt deleted file mode 100644 index bbae935..0000000 --- a/left.txt +++ /dev/null @@ -1,25 +0,0 @@ -This part of the -document has stayed the -sme from version to -version. It shouldn't -be shown if it doesn't -change. Otherwise, that -would not be helping to -compress the size of the -changes. - -This paragraph contains -text that is outdated. -It will be deleted in the -near future. - -It is important to spell -check this dokument. On -the other hand, a -misspelled word isn't -the end of the world. -Nothing in the rest of -this paragraph needs to -be changed. Things can -be added after it. - diff --git a/pa.c b/pa.c index 18f947f..2eb2490 100644 --- a/pa.c +++ b/pa.c @@ -7,108 +7,152 @@ // ======================================================================= // pa* pa_make(char* base[], int filesize, int start, int stop) { - pa* p = (pa*) malloc(sizeof(pa)); - p->base = base; - p->filesize = filesize; - p->start = start; - p->stop = stop; - p->firstline = (p == NULL || start < 0) ? NULL : p->base[start]; - p->secondline = (p == NULL || start < 0 || filesize < 2) ? NULL : p->base[start + 1]; + + pa* p = (pa*)malloc(sizeof(pa)); + + p->base = base; + p->filesize = filesize; + p->start = start; + p->stop = stop; + p->firstline = (p == NULL || start < 0) ? NULL : p->base[start]; + p->secondline = (p == NULL || start < 0 || filesize < 2) ? NULL : p->base[start + 1]; + + return p; + +} - return p; +pa* pa_next(pa* p) { + + int i; + + if (p->stop == p->filesize) { return NULL; } + pa* pnew = pa_make(p->base, p->filesize, p->stop + 1, p->stop + 1); + + for (i = pnew->start; i < p->filesize && strcmp(p->base[i], "\n") != 0; ++i); + pnew->stop = i; + if (pnew->start >= p->filesize) { free(pnew); pnew = NULL; } + + return pnew; + } pa* pa_first(char* base[], int size) { - pa* p = pa_make(base, size, 0, -1); - return pa_next(p); + + pa* p = pa_make(base, size, 0, -1); + return pa_next(p); + } -void pa_destroy(pa* p) { free(p); } +void pa_destroy(pa* p) { free(p); } -pa* pa_next(pa* p) { - if (p == NULL || p->stop == p->filesize) { return NULL; } - - int i; - pa* pnew = pa_make(p->base, p->filesize, p->stop + 1, p->stop + 1); - for (i = pnew->start; i < p->filesize && strcmp(p->base[i], "\n") != 0; ++i) { } - pnew->stop = i; - - if (pnew->start >= p->filesize) { - free(pnew); - pnew = NULL; - } - return pnew; -} size_t pa_filesize(pa* p) { return p == NULL ? 0 : p->filesize; } - -size_t pa_size(pa* p) { return p == NULL || p->stop < p->start ? 0 : p->stop - p->start + 1; } - -char** pa_base(pa* p) { return p->base; } +size_t pa_size(pa* p) { return p == NULL || p->stop < p->start ? 0 : p->stop - p->start + 1; } +char** pa_base(pa* p) { return p->base; } char* pa_info(pa* p) { - static char buf[BUFLEN]; // static for a reason - snprintf(buf, sizeof(buf), "base: %p, filesize: %d, start: %d, stop: %d\n", - p->base, p->filesize, p->start, p->stop); - return buf; // buf MUST be static + + static char buf[BUFLEN]; + snprintf(buf, sizeof(buf), "base: %p, filesize: %d, start: %d, stop: %d\n", p->base, p->filesize, p->start, p->stop); + return buf; + } int pa_equal(pa* p, pa* q) { - if (p == NULL || q == NULL) { return 0; } - if (pa_size(p) != pa_size(q)) { return 0; } - if (p->start >= p->filesize || q->start >= q->filesize) { return 0; } - int i = p->start, j = q->start, equal = 0; - while ((equal = strcmp(p->base[i], q->base[i])) == 0) { ++i; ++j; } - return 1; + + if (p == NULL || q == NULL) { return 0; } + if (pa_size(p) != pa_size(q)) { return 0; } + if(p->start >= p->filesize || q->start >= q->filesize) { return 0; } + + int i = p->start, j = q->start, equal = 0; + while ((equal = strcmp(p->base[i], q->base[i])) == 0) { ++i; ++j; } + + return 1; + } -void pa_print(pa* p, void (*fp)(const char*)) { - if (p == NULL) { return; } - for (int i = p->start; i <= p->stop && i != p->filesize; ++i) { fp(p->base[i]); } +void sideside_type(const char* left, const char* right, int nocommon, int leftparen, char symbol) { + + char buf[BUFLEN]; + + symbol = ((strcmp(left, right) == 0) ? symbol : '|'); + size_t len = strlen(left); + + if(len > 0) { strncpy(buf, left, len); } + buf[len - 1] = '\0'; + + if(symbol != '|' && nocommon == 1) { return; } + + printf("%-61s %c ", buf, symbol); + if (symbol == '|') { printf("%s", right); } + else { printf("%s", (leftparen ? "\n" : right)); } + } -void pa_printfile(char* base[], int count, void (*fp)(const char*)) { - pa* p = pa_first(base, count); - while (p != NULL) { - pa_print(p, fp); - p = pa_next(p); - } - printline(); +void print_first(pa* p, void (*fp)(const char*)) { + + if (p == NULL) { return; } + for (int i = p->start; i <= p->stop && i != p->filesize; ++i) { fp(p->base[i]); } + } -char* yesorno(int condition) { return condition == 0 ? "no" : "YES"; } +void print_second(pa* p, pa* q, void (*fp)(const char*, const char*)) { + + if(p == NULL || q == NULL) { return; } + for(int i = p->start, j = q->start; + i <= p->stop && i != p->filesize && + j <= q->stop && j != q->filesize; ++i, ++j) { + fp(p->base[i], q->base[j]); + } + +} + +void pa_print(pa* p, pa* q, void (*fp)(const char*, const char*)) { + + if(q == NULL) { print_first(p, (void (*)(const char*)) fp); } + else { print_second(p, q, fp); } + +} + +void printleftparen(const char* left, const char* right) { sideside_type(left, right, 1, 0, ' '); } +void printnocommon(const char* left, const char* right) { sideside_type(left, right, 0, 1, '('); } FILE* openfile(const char* filename, const char* openflags) { - FILE* f; - if ((f = fopen(filename, openflags)) == NULL) { printf("can't open '%s'\n", filename); exit(1); } - return f; + + FILE* f; + if ((f = fopen(filename, openflags)) == NULL) { printf("can't open '%s'\n", filename); exit(1); } + return f; + } -void printline(void) { - for (int i = 0; i < 10; ++i) { printf("=========="); } - printf("\n"); +void printleft(const char* left, const char* n) { + + char buf[BUFLEN]; + strcpy(buf, left); + + int j = 0, len = (int)strlen(buf) - 1; + for (j = 0; j <= 48 - len ; ++j) { buf[len + j] = ' '; } + + buf[len + j++] = '<'; + buf[len + j++] = '\0'; + printf("%s\n", buf); + } - -void printleft(const char* left) { - char buf[BUFLEN]; - - strcpy(buf, left); - int j = 0, len = (int)strlen(buf) - 1; - for (j = 0; j <= 48 - len ; ++j) { buf[len + j] = ' '; } - buf[len + j++] = '<'; - buf[len + j++] = '\0'; - printf("%s\n", buf); +void printright(const char* right, const char* n) { + + if (right == NULL) { return; } + printf("%50s %s", ">", right); + } -void printright(const char* right) { - if (right == NULL) { return; } - printf("%50s %s", ">", right); -} - -void printboth(const char* left_right) { - char buf[BUFLEN]; - size_t len = strlen(left_right); - if (len > 0) { strncpy(buf, left_right, len); } - buf[len - 1] = '\0'; - printf("%-50s %s", buf, left_right); +void printboth(const char* left_right, const char* n) { + + char buf[BUFLEN]; + size_t len = strlen(left_right); + + if (len > 0) { strncpy(buf, left_right, len); } + + buf[len - 1] = '\0'; + printf("%-50s %s", buf, left_right); + } diff --git a/pa.h b/pa.h index 647d092..f7a03f8 100644 --- a/pa.h +++ b/pa.h @@ -23,18 +23,24 @@ pa* q; pa* pa_make(char* base[], int size, int start, int stop); pa* pa_first(char* base[], int size); pa* pa_next(pa* p); +void pa_destroy(pa* p); size_t pa_filesize(pa* p); size_t pa_size(pa* p); char** pa_base(pa* p); char* pa_info(pa* p); -int pa_equal(pa* p, pa* q); -void pa_print(pa* p, void (*fp)(const char*)); -void printboth(const char* left_right); -void printleft(const char* left); -void printright(const char* right); -void pa_printfile(char* base[], int count, void (*fp)(const char*)); -FILE* openfile(const char* filename, const char* openflags); +int pa_equal(pa* p, pa* q); +void sideside_type(const char* left, const char* right, int nocommon, int leftparen, char symbol); +void print_first(pa* p, void (*fp)(const char*)); +void print_second(pa* p, pa* q, void (*fp)(const char*, const char*)); +void pa_print(pa* p, pa* q, void (*fp)(const char*, const char*)); +void printleftparen(const char* left, const char* right); +void printnocommon(const char* left, const char* right); +void pa_printfile(char* base[], int count, void(*fp)(const char*, const char*)); char* yesorno(int condition); -void printline(void); +FILE* openfile(const char* filename, const char* openflags); +void pa_printline(void); +void printleft(const char* left, const char*); +void printright(const char* right, const char*); +void printboth(const char* left_right, const char* n); #endif diff --git a/right.txt b/right.txt deleted file mode 100644 index 2d7f33d..0000000 --- a/right.txt +++ /dev/null @@ -1,31 +0,0 @@ -This is an important -notice! It should -therefore be located at -the beginning of this -document! - -This part of the -document has stayed the -sme from version to -version. It shouldn't -be shown if it doesn't -change. Otherwise, that -would not be helping to -compress the size of the -changes. - -It is important to spell -check this document. On -the other hand, a -misspelled word isn't -the end of the world. -Nothing in the rest of -this paragraph needs to -be changed. Things can -be added after it. - -This pragraph contains -important new additions -to this document. - -