From efb94af5457187a80f36f75c2fcf22de65a51dec Mon Sep 17 00:00:00 2001 From: ian Date: Wed, 2 Jul 2003 18:55:22 +0000 Subject: [PATCH] remove binaries and ~-files --- www-cgi/ucgi | Bin 26995 -> 0 bytes www-cgi/ucgi.c~ | 37 ------------------- www-cgi/ucgi.h~ | 15 -------- www-cgi/ucgicommon.c~ | 61 ------------------------------- www-cgi/ucgitarget | Bin 30375 -> 0 bytes www-cgi/ucgitarget.c~ | 81 ------------------------------------------ 6 files changed, 194 deletions(-) delete mode 100755 www-cgi/ucgi delete mode 100644 www-cgi/ucgi.c~ delete mode 100644 www-cgi/ucgi.h~ delete mode 100644 www-cgi/ucgicommon.c~ delete mode 100755 www-cgi/ucgitarget delete mode 100644 www-cgi/ucgitarget.c~ diff --git a/www-cgi/ucgi b/www-cgi/ucgi deleted file mode 100755 index e6ceca7c1efa13c2f7044ebff7426c33d05bf5cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26995 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�Z-zS zvWhIMA~M-hXA<`&D02yupvXky5hP`_wS?9~Q|2pj-rNO0J7ZU7+O6~qA4`P%xr!}Y znm MAX_USERNAME_LEN) error("PATH_INFO username too long"); - username= xmalloc(usernamelen+1); memcpy(username,pathi+2); username[usernamelen]= 0; - if (!isalpha(username[0])) error("username 1st character is not alphabetic"); - if (setenv("PATH_INFO",slash2,1)) syserror("setenv PATH_INFO"); - - arguments= xmalloc(sizeof(const char*)*(nenvok+argc+10)); - nargs= 0; - arguments[0]= "userv"; - for (ep= envok; (en= *ep); ep++) { - ev= getenv(en); if (!ev) continue; - l= strlen(ev); if (l > MAX_ENVVAR_VALUE) error("environment variable too long"); - defarg= xmalloc(strlen(en)+l+5); - sprintf(defarg,"-D%s=%s",en,ev); - arguments[nargs++]= defarg; - } - arguments[nargs++]= username; - arguments[nargs++]= "www-cgi"; - while ((av= (*++argv))) arguments[nargs++]= av; - arguments[nargs++]= 0; -} diff --git a/www-cgi/ucgi.h~ b/www-cgi/ucgi.h~ deleted file mode 100644 index f5bda11..0000000 --- a/www-cgi/ucgi.h~ +++ /dev/null @@ -1,15 +0,0 @@ -/**/ - -#ifndef UCGI_H -#define UCGI_H - -#include "ucgicommon.h" - -void syserror(const char *m); -void error(const char *m); -void *xmalloc(size_t sz); - -extern const char *const envok[]; -extern const int nenvok; - -#endif diff --git a/www-cgi/ucgicommon.c~ b/www-cgi/ucgicommon.c~ deleted file mode 100644 index 327beae..0000000 --- a/www-cgi/ucgicommon.c~ +++ /dev/null @@ -1,61 +0,0 @@ -/**/ - -#include "ucgicommon.h" - -const char *const envok[]= { - "CONTENT_LENGTH", - "CONTENT_TYPE", - "DOCUMENT_ROOT", - "GATEWAY_INTERFACE", - "HTTP_ACCEPT", - "HTTP_ACCEPT_ENCODING", - "HTTP_ACCEPT_LANGUAGE", - "HTTP_CACHE_CONTROL", - "HTTP_HOST", - "HTTP_NEGOTIATE", - "HTTP_PRAGMA", - "HTTP_USER_AGENT", - "PATH_INFO", - "PATH_TRANSLATED", - "QUERY_STRING", - "REMOTE_ADDR", - "REMOTE_HOST", - "REMOTE_USER", - "REMOTE_IDENT", - "REQUEST_METHOD", - "SCRIPT_FILENAME", - "SCRIPT_NAME", - "SCRIPT_URI", - "SCRIPT_URL", - "SERVER_ADMIN", - "SERVER_NAME", - "SERVER_PORT", - "SERVER_PROTOCOL", - "SERVER_SOFTWARE", - 0 -}; -const int nenvok= sizeof(envok)/sizeof(envok[0]); - -void syserror(const char *m) { - if (printf("Content-Type: text/plain\n\n" - "ucgi: system call error:\n" - "%s: %s\n", - m,strerror(errno))==EOF || fflush(stdout)) outerror(); - exit(0); -} - -void error(const char *m) { - if (printf("Content-Type: text/plain\n\n" - "ucgi: error:\n" - "%s\n", - m)==EOF || fflush(stdout)) outerror(); - exit(0); -} - -void *xmalloc(size_t sz) { - void *r; - - r= malloc(sz); - if (!r) syserror("malloc failed"); - return r; -} diff --git a/www-cgi/ucgitarget b/www-cgi/ucgitarget deleted file mode 100755 index d845646e50e59d3560662757fd0f36956bdbc009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30375 zcmeHwdw5(|b?dX19cv1TkyEX_=2Mt%^Sld&}NOf1ca zdDwEvV-nfKLN+n2;rh~q8VHa;fY9axQ(8Wgq;XOn4P4r$KucQSR%sFnt(%yVi|_BZ z_TFdC*bas7yWjoi-lK2p{MOoQ@4eRAue0}g%&pOp4NI0RQT8}bEmfqB-_g<<#Cdp! zjtMHCdYM|S-lSfSvr>!;)**v%9GGDlLJPuDgp&-2V|W!X1LK&tTN>gN!cDJMih=3X z3LP)JPa+PX6A6+CESK@;;k5iU2%l}oNpLVSB?wKnf9$jxCDXr|1JX4ydL4T z2rT<`2xlI&#e2{PQ2m_8a>IQk&KGzjeh2vF2-Lq7;S~sQkGdFvKDiX(%;PyQhTq%L zx&wt#?_VNp0ev&hmmwq&@}O%tGkyYL7W5T{4&%HZ^izi3hVv27pD^^BalRMy#|-^G zoR5KCZRkFn9|PTC=r7{@Bxw4IIBZSh+h;MIwIfwpub?~Z{R#}$m)Ng`tP8RAl~{H;_l%CVtcw5 z@x&}oInIvhQqieYv*oJeC^YGDHsu~wsg}oQ_NZF1lB?#5yVOj%P^?aZJyEJv8JjDY zOJ%h~$4=*_DLtc^)7h!1(zu$OoT^pwYSJWioQYgHx1&(0=E}}wIXj(m3dPBi8qZG@ z%E}Z|&grz3MtR6n>3kh$7K&D(H0WZ$$^W{~FF_AvUt-{~qEJA0 zJ5RmZR7&foT3TO*&dm0=3^8nX%g`zB|71(+%OUds&&cdSo-r64;~5S0&v-@$Kh85c z<|90#<37f7t5V(kY%XAiT&k2LtH)ax|zGo-sg;&HrTX*^AR`s_MGi9zNt#YVIp}Qq^UP z-{14g7Y^=Hi?4%0i{FBF*FF9)VorD8gWOJEelPx0^7Q4jUJ^b1)M*@-(+hdVJ^h5x z^hTa8efqf2^h%!EJpF*s^iJMK`l!(KQhqh*LqgMA`A*Vxq3N|ehmogegr@iM>qy@q zG`*M~CY=&05IsC;f!btd0C3(#M5nt>ll8en4o}PW~wAqe8Qm^7oQHBs6O){{ZPa zXq@HnKX?87KhFL5R5Fvww_!ZVx4gHd_1aDOWBW1oY=&MZ4>cW9*R69`?L}#-cJ(tW zKUxPmm~5H9gkV9PenL2NeX923V;ph!9j{(6_sGfo0YoqU1&ThgjEUJ79)I|d&hPPu z_4(KqonYnMBd78YQejE;um9`xX^*T|A=CCCf4a8(bggyqPf)`A!*h?U*!TUKWK*YA z@5jHzVf2~#Cl|IY>b!1y_AcnKc~hF&-A#cnp&XO8dSQJ)RnI@MY`@XH`d)>G1`_+m0A2wwiK7AF((OnIvuA!&ChnmoN z-nb;aX|V%2u*Q#9MNVpbh;o~(+)2^tgSm(wIlVbJ9Oj} z66Whn{kuB#`!+1Ovc1}R%rwL7LyS3)_ySZ(O?gVQoGtIk|W} zao>40KQqs_A=&9}&Z3Jy`2~G+DnAHTek-&4ykzHl=5+^oiHMv}<#TRik1lH=dhBxb zGo`Llb)_!c*TyasJyP#eRg54n-nb;G+rtka{fvxd(md{yvY_b6g`1CfTP+Mc7&-sE z6-dB1YuDfP#~YSuq6uLeBJ9{)^P}R#644bpBD&C7~g8GXFQEUx(7n*mU9E zJH?Wd`F~=}62?5rR{Fg5r9w~6`|xk^k1@)MFHd@#i;O5QG)5E*CrhLCx1*|#L+OW* z21?T`slVi=bl%UgVcT8l#ZQRMouYeMEB2@<10 z5cT@1=+8Qa3q}uIn_oxnO_I~eg?$`pzV;M!=>Z4TKY!_$0bq%5L58MzjF2n$eW&`W z`RC^^-XE61ciZxXSMB>w?O#u{aL$D6sU-AIF3yP#r}7b$kl)N=!iYYG5>6ld#1{O& z?s~_aTj=e3J_wnEFHrN7@SXqo+*O1vSoF7rQ`C7TYS_3fw)4sRAeC(DP*@#<$NrE zs#M%z7eUEzX4r|vHzbscU|rQWS*jH$Tm#Cvch_>2s(7R!mz$k|y15BoWhz_Ady-Mt z@qD)I+m1C@@eDr}ij~^rWMRBOy>e4IaROZAb2C=C>6z*t-*{mhgm`2Ou4iJ3qz0AT<;kv@%Y&itOuxH#kx@zgUkd@ zomM7qI<8TNrLu1ljRIAJ$`GwHsc<|!63#>;Dm|ErB{R;3*hn-UMim=cFdNYsPV};S{{4>0~OANem`NTso1;SggIP<-(ECSlqgLECqR8 z3uCF6h2F|=D<>7bb}X9CIHS?ba3Z2o(a}UE>ck?^c*YV^XC`7ek#_mvNF=3@I{rlSw+v$O#WIYoU{=@X%;j<9Ku^k%^)GXi~}%p}|CAW6W>|!-K<7 zXD|`Zq~H;W4i64S(bz`9@u4wf-NcN>2NMzM<&jiFC}VSYD+Y#4G_@f-7*&zP;MgdX za#D#zMlp91nXSpFOQ0nWWrnfes_fRy*^LLB!4eu?vAQ<1XC@c&Rdch|j+rU!nVg?S z|EpC(KJ?J@5o+T*3L#%*4|?ykZya6DCk-`(IFUJL=D&6RZl32$r)Ui9dSl6s>t@S{ zW!}Z9*>hkvla-A2Z@HvF9B76(s9}s?u@GFE@-qF(f zMuc{Rs}bS|*CP}WZb5iI!bcE3hrlv;jj{p(TP=#qXl(5$uBmacuU2CpnR~Ox=CJpJ z^CD<$(a4?<_g|Tgd%rw5=N@mLcYGzXy~482{n;il60p1;1JFqk=CJ{C&Z15&Uz(mkWLc z8f0C)Rq&ex`vvz14hW75MuWkT6C4zLi{Ng-9}?Un`16AM1fLMxFZe0J-0jAJ4p7Hp zi^r=4UoE&z@H+&r7rajJ7Qtb`CBf?j-ywKV@ZEwVf*%wd75tZiHwgYG!9#+7A$VBu zO6;N5mG=MJ1jmKHL-4hNZxyUB1pY{HTKHcSoDuvj!MyXJ)c+K`Rq(F_mjuVqQR}KK z*b&U0rPLn5?-Bg_f^QQ1S;4moeoSy(@J|HK3FZx(y4oxF4TA3w+%5Qhg5!b@3N8qK zzuKOmU@Y`gl1@H>V7XTY}uwLPoUw+&v8fycJVi!hM=i^$8+D>u37ig!ZvVe`BM za&@KKVY}c}A}}QQa=}@_Z#5|!`q=(rBW#}U5&3(BeOR!Tc+P{l`(Eez9>=YMxyz2c z1+Nf%La^5PUj)DIEd5`JLDRO|w*b>8_OSYdMdt4%?bu7mFpZTjd1UC%hfIe1JbbVG zQ4jymJoq~v?3MT8=R7jrvb-`cg_q*K0qs43q2N;BIt9&PZF$JZko~tF{BsXpj&YXx z*u$nJ{a@kBP1;*AmJGZ^K3l=BtFKA+UK?kO{IPXQ)j^Tb8r+J>w63B0Cho~tOqSK> zC*Yq;XWRZ?fwAP5l6IHLsgc&3&#Q2+g!%OSG5Qj4UA%g0B~RgW#&* zoZxxEMZq5xToU|c!4<)O1x$OFpuT=2{2}4<-^UE{*3mCS<~E6WuSCapimr#6En z0{^W3Lx#T+;#HE7u{7Z(-ryYFl z9daA|jXtLRy6`3he?#!Cg1;%4|7<=V2A}zSew9*xY%oYUtjrTW<{1%QJDM!z*Q{4+ z6u2&2{m;r@d0B(MU2t9meh>I|pugR`M19C3^FIXZzVM8PA4YSptLr80b%J#{U-00! zp&QgSTixx!Cp`E?4_<|?V&(UFFthlW$;XSo3z^#u|5=0k(ao2wZsg;Y_u?nkG}79! z_s*Sq-h9a9`L~d%tF=O{K-aA+eNATDzM^~t*d7t%L(SJd)VRleZYHAo zrsq7J)w ztGds{?^J*8;_K9RUHmTfH!j|$o^kQ@>Sr!?)H2hsBI*Y9Di>$fY8P);K^Kp!kc%hO zdKc$Z!o`zn!o@q(tc&yNb{7}a0bq^~dtvm}1A3huQCBbdDEO=b^55<9cd9SDX{Xem zyLeiiaB)%bwjqy*DyipOJflvz_}%LK7AsRx7r1y<`CPn5g5X5 zTh#|$e4F}&i*Hw7a`Bvc$i;irw_UtXJ?G;0sy8pQy4|4$T)ba#9myl2-lwj0@q*gs z;sa`*i{Gz~xcCF=(=Psf^`MLYK>eMIKd89A)cJo%J?G;8rcS%~h`R7)cm@wc2FKfb zut~Dk;G@9rF!(OuQNiu%2=Mj5>r}fu2RCE*hrz$u@L4VUJu-(q_>YYIA;>>q_-wXc zG5iDI|E1s#wIBEgBBSU1p9 zX@m61asIIPLpYrf69+R{;o-?hLK{6T7>1Q6R5GW+%35c4E6` zC+3>n<^xi3J!{i)-D)w{rxsfsD9`n&<#SDHG1sIPb4_Y7uYWA|=EF6k<#WwwG1rV1 zbIoWmuc<7y*HnjgHeXZCNL$4}9QO&<*8_I__0un5JtF)!i_9s(mkEAlJNw#O1Yah2 zmEc~%mkS;d{8qu^g7vk~9>KU+!*Qoz{KIjNV7>nOQ^D^L{u6>Dg8x}?Oz>&Jalw~# zP@fwFzg=)n@H)W-!CM3u1xEAyJ|05!Eo5=r(;M)a1E_hDx-wVD^ z@JYd+7W_LHs_N=9f-e(%zu8+DF?a@2@HYfMBlw$w`R`)}z06Pj_3=dy<~6o0*XygU0OilV zuFit*Ggq1K6MUs)dPMNmg6{)frPj%~M@9tL9uXC`5d8JBpHIdr1h`xMsicjnQy4S9 z4tx~Xki1s^YlD{q^We3mJtEk>f2AQJ>Ke7t#T#)YsMHUUb{*t7R6lJnh8sCp?mH3w z9sE@)F3%La4Allvs3BI;f4Y9OMv$-4%64YK7W*C2XVTl<`N zh3Mm`Z$KX(@KNQ6K5sXeKJPJj1q;Oyfs8$PEou+i2v^E6f&afko{Bfr@a#1nqi!Ep z9kq@^w%Ae47m7P79e9elylZW(T9~S=?Q9RU`#W~;-n|y`9cst;c);PUcs}3Iu5i~l zR9)TK=3jGFSxy6;oqj{!Vzoh^%eK+6Z#40I0o1HA)^48?^?LfZ&GQ@8##=x~*CN1-@ARh!6l@ZEt@d%l@DnZy0> za;|bFAGg3e#wT)GRX);+WB8p}MZnqYFcP%?1Cia3u zelPhRE*b*3J>(+WJ|l~&2Nykn<$3t1Y4Sxqu>CzoURQIU6?ggULr5TcL%u6uyL7`8{y1Jqa{0Pp3V(9Kna);rN-cHihAFm!kEd947crGbvoNwd z&g4YJVW*^Z!6xgvU>+>)r+xm;fVOaFZjVtk=&`RbGww91E2tZ$G<_H_UaZe@>HjdYNYd2>0|{D-FZsW6)VlaM!D&_wI6g-D3%(0-HIg-MzeDqag~iqpO@?ZX&l$^I0?0jbBDUKgYY-3g0ple)Bwm z(fRDj!x_RwT5+<#@pw0fQ}MQ6=ZA@LjoOW2!!l`y4EIRZ7{~l<$Bf`WCJ|;_LWEAi zc042_q8Z{4qwQur>zGCwZ8e<*L)_NdZwGlMLBw>nyfar0WmfmI5VS`J&umshAd&MG z!qqdoQ`ugdBp>-+0Z#?ipeJ&McVrCa1DHte{*gPzu)% z6Ao%bI(E04rH#Q;q&7z9?WWnDt>kP}e~;*aM7zs{YR>V-p@TI?dJ6ORxO(V>p5pxd z+BjqiyPL8M1jJ0L!YEIoK)0(&CA+IxkwBlT$oA~`&e}{f^f3-i==uR<-0j!J zjn~R((^Iu+@835H{x^q9e z(pAy|F}@c{y0J|b(b4;1&{g=)D}+fJt}j7KrU4llxlVu(I!2RFC70XjSQ&Oe$e>qD zN+-}oVS1?KTp5ltkb$*EW)giyj|S3##q-U>j9jG2g(@!VrZKG83EIyNsO##bQb78Q z>s`Fk%b}@>YfAVpq5@|oL(9a{^-Qj0cJ3$`fid&U1mnB_1=EM2C(y+~Dd)t}wHdrv z9AY;DF;&_Pg6$DRc4{V{4RH=6HBrD~Iuz(c+XgkO$zUf20+5xN?07EJ#~utyUM~*$ zd)Q$>;;HkQd`K2)B)3mxi#tPpLd;s_sgO=nD~?w~BA=Zq)}}*!Z3E5Dlh=~Zv`IUG zFD#!KBVP{aIA@}4W%}F^wIVL(C(g`C%0TNW%sQo+DqIMgpx*pis;q=Xc@IASrqig033v}c)YD@f1&pN_pVx;~akhx}crJYz9>a?VK) zI^ooiH5k<3aBL(ZG;$<8veC&5Zlt-O;zOy#STb!b1}Bk>#)X8%AYocGJSq&>3`XXi zu8UwT7}q4$+egA_Fw=xLMI(5IJxz;2BZrYp41P_=hT`FoG))IP2~$(C44z)cQ{|B{ zRMZgqfJ9L`1?#lR;-leIBAysai*K~AcDeJPe9UI6G`LzwB;bant z#FOYfl5R9QIs#{h{MrUXI(V&OC>ru>L%>YnX?wmC5FO0K*od?#qtSF4Prp0Ka5_yh zFyV1DxUxR!QsSOIF>PKQ}WGw#1$iYm=WeeosU`Sey z_kcz+VI8Bb0wcUtJg2$Fu4@}r8Zfq9E56rK+A_TQkfuEWQ#CM#Z7kHK4M}BCbs~?R zWh`^z>FB6wIa+_v&Zh9lnCU>KK4L?7N5S&64Gkr`wCeay!TNC8q|VC>0(J^|<=7JPaP_0zD1Ig*QT8LwoX&P%EE7ci$vc(W5ob3}cAFaMPnT z*Cd9a4N+$U#$onUL~2upqM4zTgBN|!ymcPhDDab;z5HHn+DKw37H>=oz1pe_hAp?+ zad}23m|`QG4#oyEiIfw=D=uMOdat(6$ZU*m)lIP1bOx{MgSZ%J zj!Fz-G<5Vx7wXf#i9?v|L@Le6Vne7;`@_pm#7E*GUdXUP4Z}f6jzXb6?TYXwFHbuG zuM%yE;oT{8+dk81ZQsU%g!ycd>CAS=K5d_7ZW$bN`)R+nPDhNzV_QP~+9=H#Ol?hO zLcHX1vy8^^Zlk|19_rVIXuH=q zTH>{)BZ>GBMl5Ej_1v6DMGQmhI=bG$OIaopt!(_A(G;fPPOT^=Les(gW>UvA4~K|e zW@0xS7R-wq_#-`xfl!NRO*KO#w5nsCT(q)dt~F*V9~1R;E?V0$PrgRk5nd;08Le=9 zMBZW(mYKi78ck~5O?rkmh`U{sx-ga); zX5iw*q`z@BiKSo88DuBS4CC7Qj3ol@^yw>f>^Mvm%&u#fEOqokvFQ?>w;Al7yt^ac zg%!6f_OSC)(~D~?Ucu#l5EhN(VgpI@xDb^+UUxShf_klpO(1vE9ZW7qWuLFs*oy~S zZ~tMN%-wqkDYLAk=spea*bKo zgmSm9$u@Su+{X4b`P#Ms4K};O>{ly~sJ1PD@*4ZY6gK8zgRZeZ zOupXI?1F)Ix0PJ8n+fTry5rU{R#ol}GOpOPeb`7=HFIkO>1EemZjRt@>XNc@ zmx8wz43CbGEkdyLZ4suY8)Ux)Znw8T$fqM@-w-}vwPf~bFphHAWiD;A|JNI(C$Nlt{ZKc{;6w>5EHvbA%;szIa2yIbc*%acP|V^p z2`C6X7&Qjnb_*ZPg(-qe(K|ryc&VJ5s7=opHtI>(_fH`xrA8<+-SGR2PQfVD?T ztYFliF~z|Zx;QeWiJ9WC1&ZRxZ7A_l`RdIJ*ouCeOFCgJIXc^tSWiT-KZElSKme0Z zVS@9AR4|0unI%ng{p#L?-7|cT4~|6XR12<@A*&Xw6hO(Fj>e=O`w8N0@_i{ zj~gH}S=MPc8&9Ll;z0?kct5bSvoM95hLD2uDt*WtGllGQORvV=3$QSykcBbd=)el) zt}}Z(8)!GZi93)&`%T^J{c~YqUs~$bbaj&&<2#dL?8FfB8sa|kNWluR9P)|X1yp5=X=MrTF(Ny}(*;sAAGMM`U9tFp~aE*0P- z%*EW>1L8$O4r^d+!(gjxZFd{6Y>SZ!lEN0$(6ynpUBt4#5?UJ|md%&YT0b#A03p|M zHdi#aTnw8f2#F-N$J$&1TS1lxV`154iA*Yqy-ct2Hf4^cog2iCELX1BG4{8S*a%O72nZ1w8^!J< zGG`2PAr%xVokPZP|tMd zu{y~h2T9(k)Jo~wiMVXx?MQu-66rnn8F@cf-=-8k?)hN^mrE6Us}g*C%EydAJ!{(R z%}R5_PyB#fg8FVHq^G^o_Eu%%_Mlv?@kS*__Np`9ByH|68tE<$K**c77&%ZGcF?kM zedl3!TQ)Ybz#fptIZ@RU1^rM@P+x1}#5uq3-L(?N$Ho9x&P^NAUJg!qQt~nlDKXMC zQre42laekrC6_UHmZtHXOEt^3)Xxd966l-M7gOe*s=oZ!V{o|Ify6r;p?T;A|Op+Oa6Wg}nZt6~C-yImO&=d_=54 z%~s{BUo;mFeJOka%rN+16gf;>u+bP}EI+p^(7;6(>JstwESn_TNV2d$w($rEtC5 zHW*}ths&78whb>PWliVZw&7q!Cbtwk+csRtlijp!!<9Fg&D%EIAt1MD+lKv3nBHw0 z=#NGU(WY%1aE)0_+csbuyI5K7Q-|0`JJ+@ixZ1d;Z5wd4b>3|oFtu&mwyC(!95Q2V z9`AE|wsXMO2I8?l?{*IO+Qz2s9Mp!k5f9NdHff|KaZdyOY;4kiOB0(mX~1LEv97qk zVzyDhrFke4{`733fKLO@+@t}UCPKVvlLl;Bc-AHj__Pq>(z2TKr;S=euHWn?4H_8D z6g8VRX%NBMJjW&tCq7-unx?%5@O5K7d#?derpcbQ*MKNpwL#P(r-H`Zg|3AtckTiS zXI!xw6%4O<=Prq9p1U;b|M=Xcvwf+#3$gCp1^jF0E{XqjbC(wQHFMXQvlJ4rj&ahn z6alKx%u@K?WNBw;2o=h9-I!C?$|e@31UuQ_n~qizt!N^*y@nqK!0rZ#wp& zzU+B>@Olb<0YFb`?D~2dgKWh`(~X(LMa`*Z^(Wns3m1uM7MpQU#LX1*1Sd*PU6`#b zEbYpb<~@%fRJbs~cNeuG zbo_64;4?!~N9W-zzmJ3St2}90S3KT=@Nxvo$?w=8!Ut@R76Vw%cqLTi_>IEVkUI|A z#`Da;_p^Tof%);hVD9Y-Zju^@BUcMb0ZZS&(dCfg8!&pf$@E%$>)j()iTayL+p%9_Jx z&UfR?{8)E4;oFn^{Ulo!MQnZ_2exwjZH5DovvFRz&wAweRp>*I^O)hLdC((w1ae1S zLhdUbIer`SDCAg|_Mi?7#}Q~A?cldR`8!WXfl+;OP=(&= zKzZh8<$S>Qu(p2}44Z~=%L!VrLy3x5(7L6bAodJkhi+nd6YAb%q>oG_AeOaYfU*R_!-VmrBj+aYDyy z&u~1@w44)Su6Mmx=XJVn*D%asTtYX-ZjmUOt))IUm`TyrKZs-a5U)VM!ocm zU-DWizbqz6Hl_)RG*`{$UZ5m;yA6~@w981wkSnoeJ{^75T(PA&{)u=`N{50i% z=8?Y)G=E42C*-w4zD{cWu>}4If-k>4W8&B0Y}22I@-~6C{#}Bv<`zJ&!*`@`Lc6{| zRdMDI%iuEt$p1Ameh+)%-v|DbhvxVxpZ^#673$+S+xl99U(!04J<8NS?f(MgEzR;z zfIRHlw-R5&!8_+hp7AWNq5lfSam9Y)nD+l;Q~X8ZZ`=M@-oGN=9`rB2L1n+|%lug% z{0@tjxj-%RbX3Z(1kG==bU?t$%lqn*-~z?3V)7k**27BV_ZHAc@qKaj%!|~8>I%@q z?``}p+?Al0oA!ATzHl4`&3EegK0MQpg65C@+zgs^Uj)s=jx#mTdBoSiWAC^F^epHr z4Ef0gl{wEC@3kAc1y@gFnsKLC9U^lC%@6!c@DX+O(54@1(E zpfQvS{YKDsd{~L`VHM~_#M|GQ<1dPw0(~FkFGJW0n*CAx=QZ+;Ebs5k-HiA;zNdZ@ zWa+;-ricIeWdr)>0O(fq5BocGe+1f&KPwRbNzj)vUgVYf66n>S?eEe(4%&_f7omRt z8Z^JF#_#el|L=kBgFL@{N_$@bJq&sy&ZN)B5X|cVK;=X0xdikU#9RNo4YX~4D>449 z1)WFy0OXne9iY9xYZnDQi}*zoKL*;X-@8ED@$MpAxs^fhhdlcc^W*oozVRuo5AC@F zwD))LJ_Py*P1@!+SXnXho_>G-=Ay3Tw&-}u|2$rQ-1B{pPv;lr70XvB^ z?OoV*jAZbzDxW;ZZ|CV((eX?{dypHFC1=M}X*=$O%aXv!)@H$t4m%t0ATM5pi1OiB zM{!Z%;NgPlJ*u?*Mn34`_bdJ5c$&*)h!L19mB(=>za)F+$V{G;HHCW%l%Z`Teq(9n|V%TD<1HT4cfU(j& zY5eS8Q;NwMC%@bLdZ0JL{B)p~rGIeH%h5kG=;gS(7w*p&dSmq#LldW}f6dU#JM%XN zo8n|`sCO=!_~-tGL$3(l-GL|1;9yI{%aNTJcY_7)lV3gbO6XrT)W4kQnppq%qn9sxJo2lIUapgqMYA(Bl2{)e z;bWM10@TUy4Igv_{P1G4Fn%fokE^3>_a`0Ak3u$yNoOz$p7CRrSYhKwDZSGF8 -#include -#include -#include -#include -#include -#include - -#include "ucgi.h" - -void *xrealloc(void *ptr, size_t sz) { - void *r; - - r= realloc(ptr,sz); - if (!r) syserror("realloc failed"); - return r; -} - -int main(int argc, const char **argv) { - char *uservar, *scriptpath; - const char *nextslash, *lastslash, *pathi, *ev, *en, *scriptdir; - const char *const *ep; - const char **arguments; - size_t scriptdirlen, scriptpathlen, l, uservarnl; - struct stat stab; - - ev= getenv("USERV_U_DEBUG"); - if (ev && *ev) debugmode= 1; - - if (argc > MAX_ARGS) error("too many arguments"); - - scriptdir= *++argv; - if (!scriptdir) error("no argv[1] (script directory)"); - scriptdirlen= strlen(scriptdir); - - for (ep= envok; (en= *ep); ep++) { - l= strlen(en)+11; - if (uservarnl MAX_ENVVAR_VALUE) error("environment variable too long"); - if (setenv(en,ev,1)) syserror("setenv"); - if (unsetenv(uservarn)) syserror("unsetenv"); - } - - pathi= getenv("PATH_INFO"); - if (!pathi) error("PATH_INFO not found"); - if (pathi[0] != '/') error("PATH_INFO must start with /"); - lastslash= pathi; - for (;;) { - nextslash= strchr(lastslash+1,'/'); - if (!nextslash) error("insufficient slashes in PATH_INFO beyond directory"); - if (nextslash[1]=='.' || nextslash[1]=='#' || !nextslash[1]) error("bad char begin"); - if (nextslash-pathi > MAX_SCRIPTPATH_LEN) error("PATH_INFO script dir too long"); - scriptpathlen= scriptdirlen+(nextslash-pathi); - scriptpath= xrealloc(scriptpath,scriptpathlen); - memcpy(scriptpath,pathi,scriptpathlen); scriptpath[scriptpathlen]= 0; - if (scriptpath[scriptpathlen-1]=='~') error("bad char end"); - r= stat(scriptpath,&stab); if (r) syserror("stat script"); - if (S_ISREG(stab.st_mode)) break; - if (!S_ISDIR(stab.st_mode)) syserror("script not directory or file"); - lastlash= nextslash; - } - if (setenv("PATH_INFO",nextslash,1)) syserror("setenv PATH_INFO"); - - arguments= xmalloc(sizeof(const char*)*(argc+5)); - nargs= 0; - - arguments[nargs++]= scriptpath; - while ((av= (*++argv))) arguments[nargs++]= av; - arguments[nargs++]= 0; - - execvp(scriptpath,(char*const*)arguments); - syserror("exec script"); - return -1; -} -- 2.30.2