jas@hou2d.UUCP (05/26/87)
limitations prevent using the =. However, the same result may be obtained by placing the commands in the VI.INI file. References: <209@ttrde.UUCP>
louis@drutx.UUCP (06/02/87)
In article <210@ttrde.UUCP>, rdj@ttrde.UUCP (Robert D. Jackson) writes: > I am using a version of PC/VI, and have been trying for some time now > to get the EXINIT environment variable set to my liking. I had the identical problem with MKS Toolkit's vi. Since I couldn't put spaces or = in my EXINIT, I was using an ex.rc file in the root directory of my hard disk. When I made my current drive anything but the hard disk, vi couldn't find ex.rc and would blow up. I finally lost patience with the DOS SET command and rolled my own. After writing the program, I discovered that by setting HOME=c:, vi would have found ex.rc all of the time. Oh well. I like EXINIT better, anyway. What follows is the source and uuencoded binary for setenv. Lou Warshawsky -------- cut here for setenv.c -------- /* * setenv - set environment variable * * This program duplicates the function of SET, while avoiding * arbitrary limitations on the characters that may be used in * the variable's value. * * To set a value containing spaces, enclose the value in * quotation marks, as in: * * setenv EXINIT "set ai dir=d:" * * Compile this module using the large memory model. * * Copyright (c) 1987 by Louis Warshawsky * Permission is granted to reproduce for any purpose. * * This program has been compiled using Microsoft C 3.0 and * tested briefly under MS-DOS 2.11. */ #include <dos.h> #include <stdlib.h> #include <string.h> #ifndef NULL #define NULL 0L #endif #define ALTSYNTAX 1 /* use C-shell syntax (no =) */ #define START_SEG 0x60 /* start search after DOS communication area */ /* * Locate command.com's environment table. * The first occurrence on a 16-byte boundary of the string at * envp[0] is probably it. The redundant test of the first * character speeds the search. */ char * findenv(envp) char *envp[]; { register int c; char *p; c = *envp[0]; FP_OFF(p) = 0; for (FP_SEG(p) = START_SEG; FP_SEG(p) < _psp; FP_SEG(p)++) if (*p == c && strcmp(p, envp[0]) == 0) return p; return NULL; } /* * Recreate command.com's environment table at (op). * WARNING: Since command.com does not divulge the size of its * environment table, we can not check for overflow. */ makenv(op) register char *op; { char **ip, *cp; /* copy each string from our environment */ for (ip = environ; cp = *ip++; ) while (*op++ = *cp++) ; /* add a final null */ *op = '\0'; } main(argc, argv, envp) int argc; char *argv[], *envp[]; { char *ep; #if ALTSYNTAX char line[128]; /* C-shell syntax */ if (argc != 3) error("usage: setenv name value"); if (strchr(argv[1], '=') != NULL) error("setenv: variable name must not contain '='."); strcat(strcat(strcpy(line, argv[1]), "="), argv[2]); if (putenv(line)) #else /* MS-DOS syntax */ if (argc != 2) error("usage: setenv name=value"); if (putenv(argv[1])) #endif error("setenv: bad assignment."); if ((ep = findenv(envp)) == NULL) error("setenv: can't find environment."); makenv(ep); return 0; } error(s) char *s; { cputs(s); cputs("\r\n"); exit(1); } -------- cut here -------- begin 644 setenv.exe M35K:`0D`,P`@`($`___^```(&X%=`!P`'@````$`#@#\`$(````)````$`#\ M`,D!``"]`0``L`$``*4!``"2`0``A`$``&T!``!?`0``3@$``$`!```V`0`` M+`$```8!``#U````W@```,X```!U````5``<`)(`Y@!>`!P`/@$<`%H!'`!? M`1P`A`$<`(L!'`"1`1P`ZP$<`!(`_``I`*8`%`#\`#4!J`#:`*@`M@"H`%T` MJ`#/`AP`&`#\`!8`_`!&`,L`<0,<`(H#'`!(`-<`&0#7`#H%'`"^!1P`$`8< M`+$&'`"=!QP````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M``````````````````````!5B^RX!@":'P`<`%;$7@8FQ!\FB@>8B_#'1OH` M`,=&_&``ZS+$7OHFB@>8.\9U),1>!B;_=P(F_S?_=OS_=OJ:6P(<`(/$"`O` M=0B+1OJ+5OSK%/]&_(X&O@&+1OPF.08Z`7?`,\"97HOE7<M5B^RX"`":'P`< M`(X&P`$FH4P!)HL63@&)1OB)5OK$7OB#1O@$)HL')HM7`HE&_(E6_@O"=!C$ M7OS_1OPFB@?$7@;_1@8FB`<*P'32Z^C$7@8FQ@<`B^5=RU6+[+B$`)H?`!P` M@WX&`W0-N%``'E":G0$``(/$!+@]`%#$7@@F_W<&)O]W!)HP`AP`@\0&"\)T M#;AI`!Y0FIT!``"#Q`3$7@@F_W<*)O]W"+B5`!Y0)O]W!B;_=P2-AGS_%E": MD`(<`(/$"%)0FOL!'`"#Q`A24)K[`1P`@\0(C89\_Q90F@\`J`"#Q`0+P'0- MN)<`'E":G0$``(/$!/]V#O]V#)H`````@\0$B4;\B5;^"\)U#;BO`!Y0FIT! M``"#Q`3_=O[_=OR:;````(/$!#/`B^5=RU6+[#/`FA\`'`#_=@C_=@::00`< M`(/$!+C/`!Y0FD$`'`"#Q`2X`0!0F@P`I@"+Y5W+```````````````````` M`%E:B]PKV'(+.Q[6`'(%B^-24<NAT@!`=0/IEP%24?\NT@!5B^Q6'L5V!C+D MK`K`=`E0FN`#'`!8Z_(?7EW+O^$`BS8"`"OW@?X`$'(#O@`0^H[7@<3.`?MS M`^E6`8'D_O\VB2;@`#:))MX`B\:Q!-/@2#:CW`"T,,TA-J-$`3P"<RH>,\!0 M#A^ZKP"T"<TART1/4R`R+C`@;W(@;&%T97(@<F5Q=6ER960-"B0#]XDV`@", MPRO>]]NT2LTA-HP>.@&+-BP`'A:X`#7-(3:)'M@`-HP&V@`.'[@`);KM`<TA M-HL.M`'C(C;%!K8!C-HSVS;_'K(!<P/IVP`VQ0:Z`8S:NP,`-O\>L@$''_R_ MR@&YT`$KSS/`\ZH6%@<?FOX"'`"[!`"X`$3-(7(*]L*`=`6`CV8!0$MY[)KL M`QP`F@,%'`"[O@&!^[X!<PE3_Q];@\,$Z_&Y"@`KX;Y&`8O\%@?SI)H.`,L` M,^V:Q0```%":#`"F``T*4W1A8VL@;W9E<F9L;W<-"@T*1&EV:61E(&5R<F]R M#0H-"D9L;V%T:6YG('!O:6YT(&YO="!L;V%D960-"K$2NI,!,NT.'[L"`+1` MS2$6'[C_`%":MP(<`+$0NJ4!Z^.Q';JU`>O<58OL5U8>Q'X&B]<SP+G___*N M3XOW!L1^"HO?N?__\JY!]]F+_HOS!A\'\Z2+PHS"'UY?7<M5B^Q7Q'X&B]\S MP+G___*N0??9BD8*B_ORKD\F.`5T!#/_CL>+QXS"7UW+58OL5U8>Q78&Q'X* MB]\SP+G___*N0??9B_OSIHI$_S/))CI%_W(%=`5!ZP+WT8O!'UY?7<M5B^Q7 M5A[$?@H&'XOW,\"Y___RKD'WV<1^!HO7\Z2+PHS"'UY?7<M5B^R[O@&!^[X! M<PE3_Q];@\,$Z_&:_@(<``KD=`J`?@8`=03&1@;^'L46V`"X`"7-(1^+#K0! MXP>[`@#_'K(!BT8&M$S-(56+[%8S]KDU`#+D_*PRX.+[@/15_@XU`'4&B"8T M`.L1"N1T#;HV`+L"`+D9`+1`S2$RP*(U`%Z+Y5W+58OLQ%X&)H!/_@&+Y5W+ M58OL5E>#/IP!`'4(Z"4`=!*CG`'H:@!U%>@8`'0%Z&``=0O_=@::)`@<`(/$ M`E]>B^5=RS/`'E!0L/Y0L`)0FL$&'`"#Q`B#^O]T,XO"AQ:>`:.@`0O2=`6. MVJ,(`([8,\"C"`!(2*/\`+@*`*,``*,"`+#QHPH`L/ZC!@",V!_#C-B.P(M. M!C/;CAZ@`>B<`0O2C,&.V<-5B^R*5@:T!LTA7<N/!I0!CP:6`8X>.@$6HH% M1T$ZX'04/")T"#P)=`0\('7K6!8'OH$`ZRM/*_X+_W3QB\]"6XO#`\$%`P`E M_O\KX(O\'@8?%@?SI+`@JHO+'[Z!`.L.B\@$!"3^*^"+_+A#(*OSI(O!JHOT M%A]04(O<B_ZLJ@K`=#\\(G4@'E;_!D8!K`K`="\\(G4'@'W_7'4$3ZKK[4?& M1?\`Z]3H1`!TSTX>5D;_!D8!K*H*P'0(Z#$`=?7KX*J+](/K!#OS<P^MAP>) M1/ZMAT<"B43^Z^J+W`O2=0+_!XP62@&))D@!_RZ4`3P)=`(\(,./!I@!CP:: M`8X>.@$SR8O!B^F+^4F+-BP`"_9T"([&\JY%KG7Z19=`)/Z+_='ET>4#Q18? MFA\`'`"+SXO\`_V+[!8'CMXS]DGC$8E^`(Q6`H/%!*RJ"L!U^N+OB4X`B4X" M%A^))DP!C!9.`?\NF`'IRP"#^>YS^$&`X?Z+=P+\K8O^J`%T0D@[P7,5B]`# M\*VH`70T`\(%`@"+]XE$_NOFB_YT#`/YB4S^*\%(B07K!0/Y_DS^B\:,VH'Z MX0!T!2:,'J`!B7\"PR;&!J0!`CW^_W0EB_X#\*VH`73RB_Y(.\%SO8O0`_"M MJ`%TX@/"!0(`B_>)1/[KYHM'"`O`=`2.V.L3)OX.I`%T$(S8/>$`=`4FCAZ< M`8LWZ[V+=P8SP.A9`#O&=`TD`4!`F.A-`'0-_DW^Z`L`=`663D[KFC/`F<-1 MBT7^J`%T`RO(24%!NO]_)CL6H@%V!-'J=?6+P0/&<A4#PG(-]](CPBO&Z`P` M=0CWTM'J=>4SP%G#4E'H'0!T&%>+_HOP`_+'1/[^_XEW!HO6*]=*B57^6%E: MPU-0,](>4E)0N`$`4`8?FL$&'`"#Q`B#^O\?6EMT`@O2PU6+[%97!H-^"@!U M.+_@`(M6"(M&!DAU!^A3`'(GZTB+-C`!2'01._=T#8M$`HE&#E;H.@!><S"# MQ@2!_C`!<P0+TG4&N/__F>L=B]J#PP_1V[$#T^NT2,TA<NF2B02)5`*)-C`! M,\`'7UZ+Y5W+BTX.B_<Y3`)T#(/&!('^,`%U\OGK/XO:`QQR.8O3CL$[]W4& M.1[<`',F@\,/T=O1Z]'KT>L[]W4)`]FA.@$KV([`M$K-(7(-._=U!(D6W`"2 MAP2+T<-5B^Q65Q[\'@>+3@I!@.'^Q7X&,]N,V#WA`'4#NZ8!BU<"3T^+]ZU0 M5R3^B04#\#OR=0%"K:@!=`?_!0$%2.OMT>IS`XE_`CL-="YR'SW^_W4N1T<S MP.B@_CO&=2/H7_YT'I=>6H#B`0@4Z[.+!8D-04$#^2O!0(D%C-J+1@;K`S/` MF5]9@.$!"`T?7UZ+Y5W+58OLBUX&@$_^`8OE7<M5B^Q65[NF`8,_`'4I'@>X M!0#H9_YU!3/`F>LD0"3^HZ8!HZ@!EL<$`0"#Q@3'1/[^_XDVK`&+3@:,V([` MZ!']7UZ+Y5W+58OL5U8>BTX.XS"+V<1^!HOW,\"Y___RKD'WV3O+=@*+RXO^ MQ78*\Z:*1/\SR28Z1?]W!70%0>L"]]&+P1]>7UW+58OLC@;"`2:A0`$F"P9" M`70%)O\>0`'_=@::MP(<`(OE7<M5B^R#[`Q75HM&!@M&"'1:BT8&BU8(B4;X MB5;ZZPDF@#\]=`S_1OC$7O@F@#\`=>Z.!L0!)J%,`2:+%DX!B4;TB5;V"\)U M4+@(`%":2`,<`(/$`HX&Q`$FHTP!)HD63@&)1O2)5O8+PG4&N/__Z1X!_P:$ M`<1>](-&]`2+1@:+5@@FB0<FB5<"Q%[T,\`FB4<")HD'Z?4`BT;X*T8&4/]V M"/]V!IJC`:@`@\0&B_`+]GP#Z<$`]]B+\(,^A`$`=5/1X-'@!0@`4)I(`QP` M@\0"B4;TB5;V"\)TD/\&A`&)=OSK)HO>T>/1XXX&Q`$FQ#Y,`2:+`2:+40+$ M7O2+_M'GT><FB0$FB5$"3@OV?=6+=OSK)8O&T>#1X`4(`%#_=O;_=O2:!@#7 M`(/$!HE&](E6]@O"=0/I,O_$7O2+_M'GT>>+1@:+5@@FB0$FB5$"Q'[TB][1 MX]'C,\`FB4$&)HE!!(X&Q`&+1O2+5O8FHTP!)HD63@'K%L1>](O^T>?1YXM& M!HM6"":)`2:)40(SP%Y?B^5=RU6+[(/L#HX&Q`$FH4P!)HL63@&)1O*)5O3$ M7O(FBP<FBU<"B4;ZB5;\"\)T6(M&!HM6"(E&]HE6^(M&"HE&_NL7Q%[V_T;V M)HH'Q%[Z_T;Z)C@'=0G_3OZ#?OX`=>.#?OX`=1O$7OHF@#\]=1*+1O*.!L0! M)BL&3`'1^-'XZQB#1O($ZY2+1O*.!L0!)BL&3`'1^-'X]]B+Y5W+58OL@^P, MC@;&`2:A3`$FBQ9.`8E&](E6]L1>]":+!R8+1P)T(K@,`%"XA@$>4";_=P(F M_S>::@@<`(/$"@O`=`:#1O0$Z]+$7O0FBP<F"T<"=&$FBP<FBU<"!0P`B4;Z MB5;\QT;^``#$7OK_1OHFB@>8B4;XZRO$7OHFB@>8/?\`=00RP.L&Q%[Z)HH' MBU[^_T;^C@;(`2:(AV8!_T[X_T;Z@W[X`'7/Q%[T,\`FB4<")HD'B^5=RU6+ M[(/L"E;_=@K_=@C_=@::A0<<`(/$!@O"=!#$7@8F@&?^_HM&!HM6".M:Q%X& M)H!/_@$FBW?^@>;^__]V"II(`QP`@\0"B4;\B5;^"\)T-3EV"G,#BW8*BT;\ MBU;^B4;VB5;XZQ+$7@;_1@8FB@?$7O;_1O8FB`>+QDX+P'7GBT;\BU;^7HOE M7<L``````````````````````````````$,@3&EB<F%R>2`M("A#*4-O<'ER M:6=H="!-:6-R;W-O9G0@0V]R<"`Q.3@U``%.=6QL('!O:6YT97(@87-S:6=N M;65N=`T*`'5S86=E.B!S971E;G8@;F%M92!V86QU90!S971E;G8Z('9A<FEA M8FQE(&YA;64@;75S="!N;W0@8V]N=&%I;B`G/2<N`#T`<V5T96YV.B!B860@ M87-S:6=N;65N="X`<V5T96YV.B!C86XG="!F:6YD(&5N=FER;VYM96YT+@`- M"@#_____9@(`````````````X0`````````````````````````````````` M```````````````````````````````````````````````````````````` M````````X``````````````````````````````````````````````````` M````````````````````@8&!`0$````````````````````````````````` M```[0U]&24Q%7TE.1D\``````````````````````"`````````````````` 9`````````````````.$`X0#A`.$`X0#A```` ` end