From 2d9e172985f542bbd93462beb24127de57926e33 Mon Sep 17 00:00:00 2001 From: Chris Nutter Date: Sat, 18 May 2019 00:52:07 -0700 Subject: [PATCH] fixed side by side 100% --- deprecated/newfiles/diff_02.c | 175 ------------------ deprecated/newfiles/diff_02.zip | Bin 7935 -> 0 bytes deprecated/newfiles/para.c | 85 --------- deprecated/newfiles/para.h | 36 ---- deprecated/newfiles/right.txt | 31 ---- deprecated/newfiles/test_diff | Bin 23048 -> 0 bytes deprecated/newfiles/util.c | 53 ------ deprecated/newfiles/util.h | 24 --- deprecated/oldfiles/diff_dep.c | 25 --- diff-rcm | Bin 23216 -> 23312 bytes .../Contents/Resources/DWARF/diff-rcm | Bin 21836 -> 21889 bytes diff.c | 17 +- deprecated/newfiles/left.txt => l2 | 0 pa.c | 17 +- pa.h | 20 +- 15 files changed, 32 insertions(+), 451 deletions(-) delete mode 100644 deprecated/newfiles/diff_02.c delete mode 100644 deprecated/newfiles/diff_02.zip delete mode 100644 deprecated/newfiles/para.c delete mode 100644 deprecated/newfiles/para.h delete mode 100644 deprecated/newfiles/right.txt delete mode 100755 deprecated/newfiles/test_diff delete mode 100644 deprecated/newfiles/util.c delete mode 100644 deprecated/newfiles/util.h delete mode 100644 deprecated/oldfiles/diff_dep.c rename deprecated/newfiles/left.txt => l2 (100%) diff --git a/deprecated/newfiles/diff_02.c b/deprecated/newfiles/diff_02.c deleted file mode 100644 index 30b0d70..0000000 --- a/deprecated/newfiles/diff_02.c +++ /dev/null @@ -1,175 +0,0 @@ -// -// diff_02.c -// diff -// -// Created by William McCarthy on 4/29/19. -// Copyright © 2019 William McCarthy. All rights reserved. -// - -#include -#include -#include - -#define ARGC_ERROR 1 -#define TOOMANYFILES_ERROR 2 -#define CONFLICTING_OUTPUT_OPTIONS 3 - -#define MAXSTRINGS 1024 -#define MAXPARAS 4096 - -#define HASHLEN 200 - -#include "para.h" -#include "util.h" - - -void version(void) { - printf("\n\n\ndiff (CSUF diffutils) 1.0.0\n"); - printf("Copyright (C) 2014 CSUF\n"); - printf("This program comes with NO WARRANTY, to the extent permitted by law.\n"); - printf("You may redistribute copies of this program\n"); - printf("under the terms of the GNU General Public License.\n"); - printf("For more information about these matters, see the file named COPYING.\n"); - printf("Written by William McCarthy, Tony Stark, and Dr. Steven Strange\n"); -} - -void todo_list(void) { - printf("\n\n\nTODO: check line by line in a paragraph, using '|' for differences"); - printf("\nTODO: this starter code does not yet handle printing all of fin1's paragraphs."); - printf("\nTODO: handle the rest of diff's options\n"); -} - -char buf[BUFLEN]; -char *strings1[MAXSTRINGS], *strings2[MAXSTRINGS]; -int showversion = 0, showbrief = 0, ignorecase = 0, report_identical = 0, showsidebyside = 0; -int showleftcolumn = 0, showunified = 0, showcontext = 0, suppresscommon = 0, diffnormal = 0; - -int count1 = 0, count2 = 0; - - -void loadfiles(const char* filename1, const char* filename2) { - memset(buf, 0, sizeof(buf)); - memset(strings1, 0, sizeof(strings1)); - memset(strings2, 0, sizeof(strings2)); - - FILE *fin1 = openfile(filename1, "r"); - FILE *fin2 = openfile(filename2, "r"); - - while (!feof(fin1) && fgets(buf, BUFLEN, fin1) != NULL) { strings1[count1++] = strdup(buf); } fclose(fin1); - while (!feof(fin2) && fgets(buf, BUFLEN, fin2) != NULL) { strings2[count2++] = strdup(buf); } fclose(fin2); -} - -void print_option(const char* name, int value) { printf("%17s: %s\n", name, yesorno(value)); } - -void diff_output_conflict_error(void) { - fprintf(stderr, "diff: conflicting output style options\n"); - fprintf(stderr, "diff: Try `diff --help' for more information.)\n"); - exit(CONFLICTING_OUTPUT_OPTIONS); -} - -void setoption(const char* arg, const char* s, const char* t, int* value) { - if ((strcmp(arg, s) == 0) || ((t != NULL && strcmp(arg, t) == 0))) { - *value = 1; - } -} - -void showoptions(const char* file1, const char* file2) { - printf("diff options...\n"); - print_option("diffnormal", diffnormal); - print_option("show_version", showversion); - print_option("show_brief", showbrief); - print_option("ignorecase", ignorecase); - print_option("report_identical", report_identical); - print_option("show_sidebyside", showsidebyside); - print_option("show_leftcolumn", showleftcolumn); - print_option("suppresscommon", suppresscommon); - print_option("showcontext", showcontext); - print_option("show_unified", showunified); - - printf("file1: %s, file2: %s\n\n\n", file1, file2); - - printline(); -} - -void init_options_files(int argc, const char* argv[]) { - int cnt = 0; - const char* files[2] = { NULL, NULL }; - - while (argc-- > 0) { - const char* arg = *argv; - setoption(arg, "-v", "--version", &showversion); - setoption(arg, "-q", "--brief", &showbrief); - setoption(arg, "-i", "--ignore-case", &ignorecase); - setoption(arg, "-s", "--report-identical-files", &report_identical); - setoption(arg, "--normal", NULL, &diffnormal); - setoption(arg, "-y", "--side-by-side", &showsidebyside); - setoption(arg, "--left-column", NULL, &showleftcolumn); - setoption(arg, "--suppress-common-lines", NULL, &suppresscommon); - setoption(arg, "-c", "--context", &showcontext); - setoption(arg, "-u", "showunified", &showunified); - if (arg[0] != '-') { - if (cnt == 2) { - fprintf(stderr, "apologies, this version of diff only handles two files\n"); - fprintf(stderr, "Usage: ./diff [options] file1 file2\n"); - exit(TOOMANYFILES_ERROR); - } else { files[cnt++] = arg; } - } - ++argv; // DEBUG only; move increment up to top of switch at release - } - - if (!showcontext && !showunified && !showsidebyside && !showleftcolumn) { - diffnormal = 1; - } - - if (showversion) { version(); exit(0); } - - if (((showsidebyside || showleftcolumn) && (diffnormal || showcontext || showunified)) || - (showcontext && showunified) || (diffnormal && (showcontext || showunified))) { - - diff_output_conflict_error(); - } - -// showoptions(files[0], files[1]); - loadfiles(files[0], files[1]); -} - -int main(int argc, const char * argv[]) { - init_options_files(--argc, ++argv); - -// para_printfile(strings1, count1, printleft); -// para_printfile(strings2, count2, printright); - - para* p = para_first(strings1, count1); - para* q = para_first(strings2, count2); - int foundmatch = 0; - - para* qlast = q; - while (p != NULL) { - qlast = q; - foundmatch = 0; - while (q != NULL && (foundmatch = para_equal(p, q)) == 0) { - q = para_next(q); - } - q = qlast; - - if (foundmatch) { - while ((foundmatch = para_equal(p, q)) == 0) { - para_print(q, printright); - q = para_next(q); - qlast = q; - } - para_print(q, printboth); - p = para_next(p); - q = para_next(q); - } else { - para_print(p, printleft); - p = para_next(p); - } - } - while (q != NULL) { - para_print(q, printright); - q = para_next(q); - } - - return 0; -} diff --git a/deprecated/newfiles/diff_02.zip b/deprecated/newfiles/diff_02.zip deleted file mode 100644 index 5d4738597f697a7c3e10ee32e01e7dea316b7117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7935 zcmch6XHZjX)O8>bLJ^P>M2d8&0Rjlpq)HKx-XWCG1nC`7x(HIFcaUBL1O@562xz4D zUR6+}cX^5Ty$asz{rPe+#b(LKVkpY?<$Yn2h|Ea%2=1aya;;qXwHaB*wehvKf(&8FQ7IrJ#ru|W+<})w(bm@xnv!&CDqS-YQ-xPeZ*vS6MQYHG~>o#|>f}5Yoc7sg5-$!^fXVzJ+^%N?x@ZkXb z0MJt8hq(=vvF0lv>J-+wGHl}(yAhDOln10STs)p>kejkD0NaZTp?}ONUC++bB%3~5 zwH)~-QgJjnrLvt?@tQg}NOX-LQEkD05Vld|iW@OCwF1-Z*ET9zWYaRu1j@?O%3dB` zP~8o?n%RT!kI2RFH4thU^o^vOgQ3O5P*xlu=8ZWR->2A_9)uAf9KW<2FnM5?Fpyvj zh``XFFqU~)xskDH-QH@cN|0Tw+M-`|{|5DG2Jh}NNGtkYW%$ZoVBMMc20Dx2F&;!y zWGHm7F@hn8l)oWJ!SH-8gtuC1Vuq0o9592aSby{kNSR9;ELEQ%eBR3X;Vl!J zef!XpP*CB9lc<-r+@>eqI&LGmd|i7(l9tmuTtVYLZ)o^;ubfZrwN|&+K1t-!ZuRsehuXz43mn5aV0sSP*F?9K5>@yRP0pgVs#7NV-GvTBzj z{&?0ky2Z&sM~m-`>c~XP{p6SyEecb5PD66>fs-muhG?6JM8nHZQZKK+TXBf$iwmS) z>Ur^yem6{`wBb^r_}JvD1Ss?E)U0uSh?)RSppGP{_<%0ope<=T)oDm({+99`EU-zr ze4{210Qd+70F=)%6X!=hlI2{?OzgAFgu@lZCGVMv$?j9jQASD&sl~d&MCWc0`V`eb-REw@&Z-Qh&~;h=4#vrnVSM zDknaX8cWZ$t%B+|xK+_tQjvnGdQ^qUxqTcgR0*^j5?=`}RHTWOjsCLta?y0UAa1eUyx=UYtVaf`cC-ChaH zsR63IgVI~feY`~(K*wWZobrr9(RPb;=W`&E7 zR9>@eGcl)T%wZawxHu7GtXiP@R^wK3g^3k3t~kLOYyqvveTv)l?cl39cVqj|$J7M@ zIY>O&Xjvh%*&J>`BngaEo&?rphpsiDN^P2;#N8xQRc^n5_BG;wpTFf=XZ1mO0z6}s zt4kXB;9kCE40#C<_RvIxH!GJnLW{Inz~{@#Wh%_a>rM*IE@6*sZdGC=b$*#Ld4AJG z@;39=S~+$Rv%*;y)^)?0dZ0TY+L|=;qbrsT`LUPj${s&Q?Bm@UnE<#&NVwVeJ!pG5sRCZ*_6|A_aTf4}Eb&+%<30 zPk%{z*A|NGSjS>gS^cWs@lbK0&3H@q&0=!!P^p{UDMc9Oghqw;m!}|7K~nK5p2ISF zrO3FzZo`A)Q8A$vSH_2BG8JylcIH{755-*`2Kna7NS9Yo>D{X&dVN1TFokb*Gh-PM z9J_rDC9yK@jNNPK0Du?9e@X1OH2rtA{V`3^9HXBoIvT!IV%E__IY2brFER)U)@_4~%WF72inP@1eo0`-5`e)hj z^6dUqQJnsi4VI`X#CukO4*xeB%p#lbp>q=kt$T#{*4xCF7x)FXt17E7k50=+5b+c9 z5JodTX%SV0XWbpP(bXffJ3Zby;YqYd3SbFH!zz%fQL1u?`b}m!`O&>^;vJC!E!MR} zqMxZ#0?F<6vkM+6kL;x33$~10SGdOXUNJK$kUKIFKn*

85?BE#57!en2ktJ|w$q zK1bpHL{hYrJB~_J(azSj@&_|EBX(S=BCz3mb8H{E1?&vuZb+=Y$d*M;zaLvRt1W4A zu_PsDS7T$KkpZ=a&`-BkB&*Ql(*}->JqtkQJqKw}=3vp&o=S;21RyNh)(i&u)m+KG zdK%P}Q+78)xu&vwv>M?+Qi~ZBi=)&Dy69*1q~$_Q`JKgo+wgx7`hUFP&h;LQAgN9q zqy|>skMh^utTN&C z@L-@sEQMWgpmkoQ+GRq5d5Su`PTTQ*^mt2to`pmMj+_8hpCIzMk>`t%^C}yZtn?8q-JrfiXlSp^b-#?533_1 zh7rZiYX@H0N_zT$g9N|$u?CA?xVb4aQ;G4hUjQ-Tj;hfo<9BuZBd0$CU90|`A z-XM56nF3wW-lGTInSpyqSLE2RoBmpn|K7FDbcMiD=-4*(Cu}EvVIqqYps3G{9vo#m z53saUzWh3^cdomnlYWH)zA~sx+XJbKOU)9taZJSskkjQ`Xe;fjsT$lU%f7Z4Zx&Od z@wL(7_#|Uf>ymSHLr_eV9ZF8SR7M3xXHq&it0BLV^7lRZO-}#5UH`{&da&xu0g__d zsKW8J{2?d0qHN$lAITAn~fx0=Aiy(=Fzxb=)!ofbCpkuC2_o@AtH$Gj$JL zvwB@yqQK%NBEM?}hvFMsr=Mq)9{Gf@3?z zoq_sxHQWBsBTVZ_dT7KGmBb!^-Sk!aFt?#O6KkUg(%gc)3OZuaFaY(67zc1VQ-%9F z{>@mT4?Ic!yc9?+0jlzsIUP735DI$Ed|NJT?#RBxo?EEEeOS5L_-US;m!>&x{a~#q7^Z z43PL3NM3F>LtHj17KY?|Wi%pPJUmvgOLYO`6EVIgnj2#c&@{$^>gVkR(zH)LwHxg` z6r+psZKe$M%y3L^%N|VGhY@c{Y`tEK8BCe?%idh18<5C4PGQJ;5UrlE{Bl*xM2v|% zopc1NPY&~DVml)Uge#B%H3>NMdxl18|FA~HDP*C{t0&3s^kzkS)9ZO1H;KXB$&oVS zNyd^?opu9p`0GS`XjD9xhvR4Ep!Ww1W~D5FesCnkNpJ#LWz~LePu|CoDc04J?;DR? zeB@p`7Rle6pk9~~s?;a|{t&yepkfcx8Si-)$~@>dv4hWew=pySsddzGDg3wARYY7{ zxxmvdIF(S32AO!*F3kMqGDE~S;woFOL%%5eDTdy?qE+2Xu50);KBfAyE2gFn+I>xw zjfowTH-d6jLFtplg+A6E)YsizUTQ?#-ke|Z-*Utm#4H4!6~YzLr4HgcEWKMr8;tIK zJ&6K@F5ubj`=yR|Hg(?AztSo6AG-G4X`iONAZB$ycv|o)+dI~9jTZus4rm^auFeG@ zd1LK8hKE%jS2?`P=*}SN!0(xpS;_FGs;c=iPL+kN^)git*DP%vEtunz_aKQ!cDCeu zZIz^6%$GJpAO;4dFVA^c-@37H<3%MyDyPwt60aH3z*a0sPOm8?bd|^3pIZ7bRWbD% z-R|Nh3Z#Zo-!7DigrgKqj&AUR7AShg#^*HJ5+eD9c8`rY~lQTWQ9cUihDWQk|!WHZv?#7IzSV@%JGfF zkm{f`f~izSH_l>0*sz%Kc<Mu1+ zQ{wyp6-_~k>Zg6kd-JMjV(ft@-w{`Ro$s}KlM&ZXs}l{f-d$4Y_|E2a@_F%a5o8z! zKh+LBb#>gDXg|7x*E~8NAC2k3r7JWnPrDGH=~*vB%{ljMiEg>z4gqk#ANbZj6y}&Z zqjvbb&d1Bs$tzb?YTN`6-RI8xUBm^{87Gm7v*#>U?T(o}0!c15^(A-^YZ@idV2qw- zQXSO8@<6bo7!)YW(02(9+g7`i?cJaVt$5kH|xf-g<%uZsEKDh_mZWGY|yCA z(^+AO{BeX{g={>#RtJMF_dFhw({3&$hn;|^iWMS9*&EZWmEO~isdusbqfHmYhHulC7bj8!oDpDGV z@ml!~A&xI501Hk4*ehgic8m*B;GN>Utg(pc8G_anK!X-f=@jLNt;b{>Hf_or1DOM9 z7bE}>+lyj@=I!|uQ~7GLWiJ^EqGa;BdAj}bTL?@1DIwC%d#hi_aB4o)3X|yrVn0QmUFQam8qS$O#Ec>+z_QqVA-PDo`b= zsvPaN(=F;FhIB<lFq@<`IRqvXkfp9g%4(B=>WKNXpwN@YeVdcs%QV z0#Tmv-clW4m}`#8XVDMnv{wzrC)IgUMBG1Su*;Wv!-hV=nY&GLN%fe2;j#$6`trL~ z*kq+b^)TZ{H}Ih@;i-yOpd=lxt-l33W4eA1{Q5{;0mcbbyb;p&=&m)Z(w?*w6Sf!N zL{y56DR4T~yq9phmdtK$b9WxyA3z%KoB(gAld-Obq~BKzh{Z%%MIzr4AV_}>Z+3TZ_NBwSllYu z$$9thy*54V!MQ2353bEic_qA3J>)~@|I`TrH^!G;y%e)Kh|h~*doPsxUd*=Pj!r}1 zt-;>SI=(xwsl4$o9=y!Pqwq54y}JlDOWB_AV9bL;9kR>=W(@&?BKOR$D_E@0ZcZXf zR6BhSA*=QPc;h^U4pU;VQK%gKjb1LmV;quKqR&%>N779Ex%$Qn7Q?oKBHQh_Xmvc0?70l&%eY7HKJfuif^vV@He1Evi%l0v%7EP#D#3P;F<+1BH zhgZ7%R9%>SeQ!>`<)l(=^g6eRXX8Ku#t|hfy4C94v+|Kx7Ol37d1^oN0I2h!LlEPA zUJV;XL7J)>3Equ)Ug-PK>NJMIJCXIq(XLgS?rwJ7z92Q$9R@!t*ASufs}p1zM3M$q zKD;+n+)u-5RL1_)Z8;`!A_?<&VK^N4qPu&8+9CRI!QD`CDD`fm;xzsXEQ%t8V`ttB z!VOE+hTbZ~E9jeIHsnMoBj8fb*t*8ro_b8IRO2g{AfUc**F|&J`>=Sp7p|)L{0Z%#v$U;I8?q;MZMb$r}EP z%#Lz-FS6np=mQa7!X?`WcV8_x2{EtUZd4uGha7uWm`;Mo@9yJpYD;>*XiX@obZUqWxBqH3<)Yn)CiqMB_9y462M`)(}gYo>HAG*37y6{oH`$QsOm zj0rHtEWBxBevEsR5&r5p&^wAVy;x7I8d28Ikl~QP-)hJw1~cVnoV4_K-nozvj&!%T z39Ys5VW$=x*X$!6DYs(iE>7r-QgycB?sL@>s%#&e>p*9un32e-*GisoN}yDKo^cCv ztdlzR>&8hh!$ZeX#43eS9^ew}s!TGClF)Us*D@o>x-H@2tb>4rZoZl>B;VMlWfi#p zwuZ6gGD|LiZlBD;Yuqq8k@;8vz*WfkLGJhC z{O$no&D>_M=aYH_5HW` z4gUFJOZg6J{hti?U+YiAlg z;?s~~0swz|gkZqmj`VpbD1+d})p=9vA{6?ww-!IvpSeTe zpLXDRD5&-4ou-RWtg!zH<&U9IPj%i9xd?^iY$N}6KEQy#jjHodQ0vdT6c?dX;a-69 z-=RE}Am~zUwOL*Z%-4V!ZMI diff --git a/deprecated/newfiles/para.c b/deprecated/newfiles/para.c deleted file mode 100644 index dd07454..0000000 --- a/deprecated/newfiles/para.c +++ /dev/null @@ -1,85 +0,0 @@ -// -// para.c -// diff -// -// Created by William McCarthy on 5/9/19. -// Copyright © 2019 William McCarthy. All rights reserved. -// - -#include -#include -#include "para.h" -#include "util.h" - -#define BUFLEN 256 - - -para* para_make(char* base[], int filesize, int start, int stop) { - para* p = (para*) malloc(sizeof(para)); - 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; -} - -para* para_first(char* base[], int size) { - para* p = para_make(base, size, 0, -1); - return para_next(p); -} - -void para_destroy(para* p) { free(p); } - -para* para_next(para* p) { - if (p == NULL || p->stop == p->filesize) { return NULL; } - - int i; - para* pnew = para_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 para_filesize(para* p) { return p == NULL ? 0 : p->filesize; } - -size_t para_size(para* p) { return p == NULL || p->stop < p->start ? 0 : p->stop - p->start + 1; } - -char** para_base(para* p) { return p->base; } - -char* para_info(para* 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 -} - -int para_equal(para* p, para* q) { - if (p == NULL || q == NULL) { return 0; } - if (para_size(p) != para_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 para_print(para* 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 para_printfile(char* base[], int count, void (*fp)(const char*)) { - para* p = para_first(base, count); - while (p != NULL) { - para_print(p, fp); - p = para_next(p); - } - printline(); -} - diff --git a/deprecated/newfiles/para.h b/deprecated/newfiles/para.h deleted file mode 100644 index e54444c..0000000 --- a/deprecated/newfiles/para.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// para.h -// diff -// -// Created by William McCarthy on 5/9/19. -// Copyright © 2019 William McCarthy. All rights reserved. -// - -#ifndef para_h -#define para_h - -#include - -typedef struct para para; -struct para { - char** base; - int filesize; - int start; - int stop; - char* firstline; // DEBUG only - char* secondline; -}; - -para* para_make(char* base[], int size, int start, int stop); -para* para_first(char* base[], int size); -para* para_next(para* p); -size_t para_filesize(para* p); -size_t para_size(para* p); -char** para_base(para* p); -char* para_info(para* p); -int para_equal(para* p, para* q); -void para_print(para* p, void (*fp)(const char*)); -void para_printfile(char* base[], int count, void (*fp)(const char*)); - - -#endif /* para_h */ diff --git a/deprecated/newfiles/right.txt b/deprecated/newfiles/right.txt deleted file mode 100644 index 2d7f33d..0000000 --- a/deprecated/newfiles/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. - - diff --git a/deprecated/newfiles/test_diff b/deprecated/newfiles/test_diff deleted file mode 100755 index b0513e9c1dca9c14ff92f52ea331c4bfb6b0f04c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23048 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 MAu*@~B`wtdU*;{NXaE2J diff --git a/deprecated/newfiles/util.c b/deprecated/newfiles/util.c deleted file mode 100644 index 2c4b9f1..0000000 --- a/deprecated/newfiles/util.c +++ /dev/null @@ -1,53 +0,0 @@ -// -// util.c -// diff -// -// Created by William McCarthy on 5/9/19. -// Copyright © 2019 William McCarthy. All rights reserved. -// - -#include -#include -#include "util.h" - -#define BUFLEN 256 - - -char* yesorno(int condition) { return condition == 0 ? "no" : "YES"; } - -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; -} - -void printline(void) { - for (int i = 0; i < 10; ++i) { printf("=========="); } - printf("\n"); -} - - -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) { - 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); -} - diff --git a/deprecated/newfiles/util.h b/deprecated/newfiles/util.h deleted file mode 100644 index 6ff3302..0000000 --- a/deprecated/newfiles/util.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// util.h -// diff -// -// Created by William McCarthy on 5/9/19. -// Copyright © 2019 William McCarthy. All rights reserved. -// - -#ifndef util_h -#define util_h - -#include -#define BUFLEN 256 - -char* yesorno(int condition); -FILE* openfile(const char* filename, const char* openflags); - -void printleft(const char* left); -void printright(const char* right); -void printboth(const char* left_right); - -void printline(void); - -#endif /* util_h */ diff --git a/deprecated/oldfiles/diff_dep.c b/deprecated/oldfiles/diff_dep.c deleted file mode 100644 index 513dd29..0000000 --- a/deprecated/oldfiles/diff_dep.c +++ /dev/null @@ -1,25 +0,0 @@ -int main(int argc, const char* argv[]) { - - //if (argc != 3 && (*argv)[0] == '-') { fprintf(stderr, "Usage: ./diff file1 file2\n"); exit(ARGC_ERROR); } - //if (argc < 3) { fprintf(stderr, "Usage: ./diff file1 file2\n"); exit(ARGC_ERROR); } - //if (argc == 3) { loadfiles(argv); normal(argv); return 0; } - - init(--argc, ++argv); - loadfiles(files[0], files[1]); - if (!showcontext && !showunified && !showsidebyside && !showleftcolumn) { normal(files[0], files[1]); } - - // while (*++argv) - // switch ((*argv)[1]) { - // default: break; - // case 'v': version(); return 0; // 100% implemented (unless I want to enhance) - // case 't': todo(); return 0; // Only for me. To be deprecated later. - // case 'q': loadfiles(argv); quiet(argv); break; // 100% implemented - // case 'y': loadfiles(argv); sideside(argv); break; // 50% implemented - // case 'i': printf("i done\n"); break; - // case 'c': printf("c done\n"); break; - // case 'u': printf("u done\n"); break; - // case 's': loadfiles(argv); loud(argv); break; - // } - - return 0; -} diff --git a/diff-rcm b/diff-rcm index 01f84b65ee1539d47d3f3f3aad9272d4a928c478..c5d36275b702f65f8515ba9625d24d69cfe1c227 100755 GIT binary patch delta 7741 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 UICu2*pGBX{w=7M@zE98p0So8!(*OVf delta 7937 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 diff --git a/diff-rcm.dSYM/Contents/Resources/DWARF/diff-rcm b/diff-rcm.dSYM/Contents/Resources/DWARF/diff-rcm index b49374bd20cf193886ca5e6ec403ffb226f4d0cd..37d61bbf2f23524b31de33062d0d7b33d734c7d6 100644 GIT binary patch literal 21889 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", right); } -void printboth(const char* left_right, const char* n) { +void print_both(const char* left_right, const char* _) { char buf[BUFLEN]; size_t len = strlen(left_right); @@ -133,7 +138,7 @@ void printboth(const char* left_right, const char* n) { } -void printcheck(pa* p, pa* q, void (*fp)(const char*, const char*)) { +void print_check(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); } diff --git a/pa.h b/pa.h index 5e6f9ab..e0f4fc6 100644 --- a/pa.h +++ b/pa.h @@ -7,6 +7,8 @@ #define MAXSTRINGS 1024 #define BUFLEN 256 +// ================================================== // + typedef struct pa pa; struct pa { char** base; @@ -17,12 +19,15 @@ struct pa { char* secondline; }; +FILE* openfile(const char* filename, const char* openflags); + pa* p; 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); @@ -32,19 +37,18 @@ int pa_equal(pa* p, pa* q); void sideside_type(const char* left, const char* right, int nocommon, int leftparen, char symbol); -void printcheck(pa* p, pa* q, void (*fp)(const char*, const char*)); +void print_check(pa* p, pa* q, void (*fp)(const char*, const char*)); void print_first(pa* p, void (*fp)(const char*)); void print_second(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 print_left_paren(const char* left, const char* right); +void print_no_common(const char* left, const char* right); +void print_side_normal(const char* left, const char* right); -FILE* openfile(const char* filename, const char* openflags); - -void printleft(const char* left, const char*); -void printright(const char* right, const char*); -void printboth(const char* left_right, const char*); +void print_left(const char* left, const char*); +void print_right(const char* right, const char*); +void print_both(const char* left_right, const char*); #endif