[Date Prev][Date Next][Subject Prev][Subject Next][
Date Index][
Subject Index]
New program: LFN Utilities for Win32
- Subject: New program: LFN Utilities for Win32
- From: "Robert Holmgren" holmgren@xxxxxxxx
- Date: Mon, 16 Feb 2004 20:17:26 -0500
LFN Utilities
--- ---------
First, import this msg into XyWrite and open it there. Do
that now!
Presumably you already installed KMD.EXE (see my earlier
message today 16/2/04). KMD.EXE *must* exist in the DOS
PATH.
Presumably version 116 of XYWWWEB.U2 is installed. If it
isn't, install it. These utilities won't work without v116
or higher.
With this message in the current window, and cursor at top
of file, command (once only!):
DECODE
Find the DECODEd programming frames. Note Well: There are
TWO blocks of XPLENCODEd frames in this message. So far, we
have only decoded the first block (the second block consists
of Help frames, which we'll handle later).
DeFine the decoded frames. That means: DeFine from the
first curly brace "{" at the start of "{{M}} Beginning of
LFN Utils" down to and *including* the second carriage
return (an empty line) after "{{M}} End of LFN Utils".
Now CA XYWWWEB.U2 into an empty window. SEarch for this
frame:
se/f |{{5ch*,ci*,cv*,se*}}|
Put your cursor at the beginning of this frame (on top of
the first of the double curly braces "{{"). CoPy the
DeFined block from the message window into U2 at this point
(right IN FRONT OF "{{5ch*,ci*,cv*,se*}}"). Command:
LOADHELP (that saves the new frames in U2).
We also need to do two housekeeping chores -- the locations
of two frames in U2 must be changed:
Go to the beginning of U2. SEarch for this frame:
se/f |{{5dir*,find*}}|
DeFine the whole frame. That means: DeFine starting with
(including) the first curly brace "{" at the beginning of
{{5dir*,find*}} down to (but NOT including) the first curly
brace "{" of the next frame {{5dfinfo}}. When you've got
this frame DeFined, search again [how easy this is with
Stack!] for frame:
se/f |{{5ch*,ci*,cv*,se*}}|
and CoPy the dir*,find* frame to a location just in front of
{{5ch*,ci*,cv*,se*}}. Don't screw this up! There should be
an empty line between every frame, so that they're visually
separated.
Finally, SEarch for this frame:
se/f |{{5ab,ab/nv,st,st/nv}}|
DeFine it also down to, but not including any part of, frame
{{5Callup*}}. Move it also to a location just in front of
{{5ch*,ci*,cv*,se*}}. And, again, Command:
LOADHELP
Now examine your work: page through the frames, and make
sure they're in this order:
...
{{5ise*}} <==the frame immediately previous to our changes
{{M}}
Beginning of LFN Utils
{{5lfn*}}
{{5dirlfn*}}
{{5dirsfn}}
{{5attrib,ca*,chdir,copy,copy/mv,del,dir*,me,mkdir,ne*,ren,re*,rmdir,sa,sad,sfn,st}}
{{M}}
End of LFN Utils
{{5dir*,find*}}
{{5ab,ab/nv,st,st/nv}}
{{5ch*,ci*,cv*,se*}} <==the frame immediately following changes
...
If it all looks OK, then ABort U2. You're done with this
part (as long as you remembered to LOADHELP it).
Return to this message. With cursor at top of file,
command, again, DECODE. This decodes the block of
Help frames. DeFine the Help frames from top to bottom.
This means: DeFine from the initial curly brace of
"{attrib,ca*,ca,chdir,copy,copy/mv,del,dir*,dir,me,mkdir,ne*
,ne,ren,re*,re,rmdir,sa,sad,sfn,st}" down to (and including)
a empty line after the last line of dashes and tabs - - -
- - - - - - -. This
DeFine block should embrace two Help frames,
{attrib,ca*,ca,chdir,copy,copy/mv,del,dir*,dir,me,mkdir,ne*,
ne,ren,re*,re,rmdir,sa,sad,sfn,st}
and
{LFN*,DirLFN*,LFN,DirLFN,DirSFN}
Now CAll XYWWWEB.INF into a window. SEarch for this Help
frame:
se/f |{Autosave,Ersatz}|
Put your cursor on top of the single curly brace "{" at the
beginning of this Autosave frame. CoPy the DF block from
the message window into INF at this location. STore it
(don't try to read it yet). Now command HELP
ATTRIB and HELP LFN to read these Help
frames with their properly formatted appearance.
You're done. Whew.
And I'm going to dinner. If this proves impossible for
people to do, I guess I'll post a beta version of U2 v117
with the changes already installed. But it's actually
pretty easy -- harder to describe than to do.
Questions? But chow for niao
----------------------------
Program Encode Block:
XPLeNCODE v2.0
b-gin [UNTITLED]
{{M}}[cr|lf]Beginning of LFN Utils[cr|lf][cr|lf]{{;5lfn*}} Ge
t full d:\path\filename including LONG file names (also works
in DIRs) S/G 50 Out WinNT+ RJH 2/16/04[cr|lf]{002}{<}IF{<
}VA$WS{>}>0&{<}VA$FI{>}<>"[UNTITLED]"!{<}VA|50{>}>0{>}{<}IF{<
}VA$WO{>}<9!{<}VA|05{>}>0{>}{<}SX01,@UPR({<}VA$FR{>}){>}[DX_]
{<}IF{<}VA|05{>}<1{>}{<}SX02,{<}VA$TX{>}{>}{<}IF{<}VA|50{>}>0
{>}{<}IF"\"{238}{<}IS50{>}<0{>}{<}SV04,{>}{<}IF":"{238}{<}IS5
0{>}==1{>}{<}SX06,{<}VA@50:1{>}{>}{<}SX50,{<}VA@50:2{>}{>}{<}
SX04,{<}VA$DV{>}{>}[BX_]{<}PV06{>}:[Q2_]{<}EI{>}{<}SX50,{<}VA
$PA{>}+"\"+{<}IS50{>}{>}{<}IF{<}VA|04{>}>0{>}[BX_]{<}PV04{>}:
[Q2_]{<}EI{>}{<}EI{>}{<}IF":"{238}{<}IS50{>}<0{>}{<}SX50,{<}V
A$DV{>}+":"+{<}IS50{>}{>}{<}EI{>}[BX_]exist {<}PV50{>}[Q2_]{<
}IF{<}ER{>}{>}{<}SX03,"Not found: """+{<}IS50{>}+"""{>}{<}PR@
03{>}{<}EX{>}{<}EI{>}{<}EI{>}{<}IF{<}VA|50{>}<1&{<}VA$WS{>}>1
{>}{<}IF{<}VA$XD{>}>0{>}{<}PRRead-only DIR - Abort{>}{<}EX{>}
{<}EI{>}{<}SX50,{<}VA$DR{>}{>}{<}EI{>}{<}IF{<}VA|50{>}<1&{<}V
A$DF{>}>0{>}[DZ_]{<}SV50{>}{<}EI{>}{<}IF{<}VA|50{>}<1&{<}VA$W
S{>}==1{>}{<}SX50,{<}VA$FP{>}{>}{<}EI{>}{<}IF{<}VA|50{>}<1{>}
{<}PRNo filespec{>}{<}EX{>}{<}EI{>}{<}SX04,{<}VA$NW{>}{>}[BX_
]d nw=0[Q2_][BX_]window n[Q2_][AS_]{<}SU06,{<}SX07,{<}IS00{>}
{>}{>}{<}GT06{>}{<}SX08,{<}IS50{>}{>}{<}SX50,{<}VA$ED{>}{>}[J
M_]2.GetPath[Q2_]{<}SX09,{<}IS50{>}+"\LFN.TMP"{>}{<}SX50,{<}I
S08{>}{>}{<}EI{>}{<}SX06,1{>}{<}SX08,0{>}{<}SV10,{>}{<}SV11,{
>}{<}SX12,0{>}{<}SX13,1{>}{<}SV51,\{>}[JM_]2.XSR[Q2_]{<}IF"\"
{238}{<}IS52{>}<0!{<}IS01{>}{240}"/FI"{>}{<}GLG{>}{<}EI{>}{<}
SX50,{<}IS52{>}{>}{<}LBB{>}{<}SX14,{<}IS54{>}{>}[JM_]2.XSR[Q2
_]{<}LBC{>}{<}SX15,{<}IS14{>}{>}
{<}LBD{>}[BX_]dos/nv/x/z /c kmd.exe /c dir/x {<}PV10{>}"{<}PV
52{>}\{<}PV54{>}{<}IF{<}VA|16{>}>0{>}{<}IF{<}PV16{>}>1{>}{<}P
V15{>}{<}EI{>}{<}EI{>}">{<}PV09{>}[Q2_]{<}SV10,/A:D {>}[AS_][
BX_]ca/100 {<}PV09{>}[Q2_][TF_]{<}SX12,{<}PV12{>}+1{>}[BX_]es
1[Q2_][BX_]se {252} {<}PV14{>} [wO] {<}PV14{>}[wC]{252}[Q2_]
{<}IF{<}ER{>}{>}{<}SV15,{>}{<}SX12,0{>}[BX_]ab/nv[Q2_][AS_]{<
}GLD{>}{<}EI{>}{<}SX17,0{>}[CL_]{<}LBE{>}[DF_][CR_][DF_]{<}SV
18{>}[XD_]{<}IF{<}IS18{>}<>" "{>}{<}IF{<}PV17{>}<1{>}{<}SX19,
{<}IS14{>}{>}{<}GLF{>}{<}EI{>}{<}EI{>}{<}SX17,1{>}{<}IF{<}IS1
8{>}==" "{>}{<}IF{<}PV12{>}>1{>}{<}SX13,2{>}{<}EI{>}{<}SX06,2
{>}{<}GLE{>}{<}EI{>}[CL_][DF_][BX_]se [wC][Q2_][CL_][DF_]{<}
SV19{>}{<}LBF{>}{<}SX11,"\"+{<}IS19{>}+{<}IS11{>}{>}[BX_]ab/n
v[Q2_][AS_]{<}IF{<}PV08{>}<1{>}{<}IF{<}IS52{>}{240}"\"{>}{<}S
X50,{<}IS52{>}{>}{<}GLB{>}{<}EI{>}{<}LBG{>}{<}SX14,{<}IS54{>}
{>}{<}SV54,{>}{<}SX08,1{>}{<}GLC{>}{<}EI{>}{<}SX50,{<}IS52{>}
+{<}IS11{>}{>}{<}IF{<}VA|20{>}==1{>}{<}IF{<}PV05{>}==1{>}{<}S
X21,{<}IS50{>}{>}{<}EI{>}{<}EI{>}{<}IF{<}IS01{>}{240}"/LO"&{<
}PV06{>}<2{>}{<}IF{<}VA|22{>}>0{>}{<}IF{<}PV22{>}>1{>}{<}GLH{
>}{<}EI{>}{<}EI{>}{<}SX06,0{>}{<}SV50,No LFN{>}{<}LBH{>}{<}EI
{>}{<}IF{<}IS01{>}{240}"I"&{<}PV06{>}>0{>}{<}SX50,{<}VA@11\2{
>}{>}{<}EI{>}{<}IF{<}VA|05{>}>0{>}{<}EX{>}{<}EI{>}[BC_]{<}PV0
7{>}[BX_]ernv {<}PV09{>}[Q2_]{<}IF{<}PV02{>}>0{>}[GT_]{<}EI{>
}{<}IF{<}IS01{>}{240}"/PV"&{<}PV06{>}>0{>}{<}IF{<}VA$WS{>}>1&
{<}PV02{>}>0{>}[LB_][BX_]se/f [wC][Q2_] {<}EI{>}{<}IF{<}PV02
{>}<1{>}[ER_] {<}EI{>}{<}SX02,{<}VA$GM8{>}{>}[SI_]{<}PV50{>}{
<}IF{<}PV02{>}<1{>}[TI_]{<}
EI{>}{<}EI{>}[AS_][BX_]rs[Q2_][BX_]d nw={<}PV04{>}[Q2_]{<}IF{
<}IS01{>}{240}"/CK"{>}{<}SX51,0{>}{<}IF{<}PV06{>}>1{>}{<}SX51
,1{>}{<}EI{>}{<}EI{>}[DO_][FF_]{<}IF"/NV"{238}{<}IS01{>}<0{>}
{<}PR@50{>}{<}EI{>}{<}EX{>}{<}EI{>}{<}PRNo window available{>
}{<}EX{>}{<}EI{>}{<}PRNo file{>}{002}[cr|lf][cr|lf]{{;5dirlfn
*}} DIRectory listing with Long Path+File Names. Usage: DIRLF
N[/xy_dir_switches 8.3_DIRspec] RJH 2/3/04[cr|lf]{0
02}{<}IF{<}VA$WS{>}>1&{<}VA$XD{>}>0{>}{<}PRCannot use Read-On
ly directory{>}{<}EX{>}{<}EI{>}{<}IF{<}VA|50{>}>0{>}{<}LBI{>}
[BX_]exist {<}PV50{>}[Q2_]{<}IF{<}ER{>}{>}{<}IF({<}IS50{>}+"[
255+192+142]"){240}"\[255+192+142]"{>}{<}SX50,{<}IS50{>}+"*"{
>}{<}GLI{>}{<}EI{>}{<}SX03,"DirMask not found: """+{<}IS50{>}
+"""{>}{<}PR@03{>}{<}EX{>}{<}EI{>}{<}EI{>}{<}SX03,{<}VA$XD{>}
{>}{<}SX23,{<}VA$NW{>}{>}{<}SX03,"[BX_]d xd="+{<}IS03{>}+",nw
="+{<}IS23{>}+"[Q2_]"{>}[BX_]d xd=0,nw=0[Q2_]{<}SX23,{<}IS50{
>}{>}{<}SX50,{<}VA$ED{>}{>}[JM_]2.GetPath[Q2_]{<}SX09,{<}IS50
{>}+"\LFN.TMP"{>}{<}SX50,{<}IS23{>}{>}{<}SX24,1{>}{<}IF{<}VA$
WS{>}<2!{<}VA|50{>}>0{>}{<}SX24,2{>}{<}EI{>}{<}CUJ,24{>}[BX_]
window n[Q2_]{<}IF{<}ER{>}{>}{<}PV03{>}{<}PRNo window{>}{<}EX
1{>}{<}EI{>}{<}LBJ{>}[AS_]{<}IF{<}VA$WS{>}<2!{<}VA|50{>}>0{>}
{<}SV23,{>}{<}IF{<}VA$FR{>}{240}"/"{>}{<}SX24,{<}VA$FR{>}{>}{
<}SV23,/{>}{<}XS24,23,,23,23{>}{<}SX23,"/"+{<}IS23{>}{>}{<}EI
{>}[BX_]dir{<}PV23{>} {<}PV50{>}[Q2_][BX_]wait[Q2_]{<}EI{>}{<
}SX05,0{>}{<}SX16,1{>}{<}SV20,{>}{<}SV22,{>}{<}IF"+"{238}{<}V
A$DP{>}<1{>}{<}SV20, {>}{<}SX05,1{>}{<}EI{>}[TF_][BX_]ci {252
}[wC]{252} [wC]{252}[Q2_][BX_]IP 0,4DI[Q2_]{<}LBK{>}[DF_][CR_
][DF_]{<}SV23{>}[XD_]{<}LBL{>}[CL_][DO_][FF_]{<}IF{<}I
S23{>}=="."{>}[CD_]{<}GLK{>}{<}EI{>}{<}IF{<}IS23{>}=="_"{>}{<
}GLO{>}{<}EI{>}{<}SX50,{<}VA$DR{>}{>}[JM_]2.lfn/lo/nv{<}PV20{
>}[Q2_]{<}IF{<}PV05{>}==1{>}{<}SX22,{<}PV13{>}{>}{<}SX20,{<}I
S50{>}{>}{<}SX50,{<}IS21{>}{>}{<}SV51,\{>}[JM_]2.XSR[Q2_]{<}S
X21,{<}IS52{>}{>}{<}SX50,{<}IS20{>}{>}{<}SV20,/fi{>}{<}EI{>}{
<}IF{<}PV05{>}>0{>}{<}SX16,2{>}{<}SX05,{<}PV05{>}+1{>}{<}EI{>
}{<}IF{<}IS50{>}<>"No LFN"{>}[BX_]se/f [wC][Q2_]{<}IF{<}PV05
{>}>2{>}{<}SX50,{<}IS21{>}+"\"+{<}IS50{>}{>}{<}EI{>}{<}GT50{>
}[CR_]{<}LBM{>}[DF_][CR_][DF_]{<}SV23{>}[XD_]{<}IF{<}IS23{>}<
>"_"{>}{<}LBN{>}{<}SV01,{>}{<}SV02,{>}{<}SV06,{>}{<}SV07,{>}{
<}SV08,{>}{<}SV10,{>}{<}SV11,{>}{<}SV14,{>}{<}SV17,{>}{<}SV18
,{>}{<}SV19,{>}{<}SV51,{>}{<}SV52,{>}{<}SV53,{>}{<}SV54,{>}{<
}GLL{>}{<}LBO{>}{<}EI{>}[DF_][CR_][CR_][CR_][CR_][DF_]{<}SV23
{>}[XD_]{<}IF{<}IS23{>}<>"____"{>}[LB_][CR_]{<}GLN{>}{<}EI{>}
[AS_][BX_]rs[Q2_][TF_]{<}PV03{>}{<}PRDone{>}{<}EX{>}{<}EI{>}[
CD_]{<}GLM{>}{002}[cr|lf][cr|lf]{{;5dirsfn}} DIRectory listin
g with Short Path+File Names. Usage: DIRSFN[/xy_dir_switches{032}
Long_or_8.3_DIRspec] RJH 2/16/04[cr|lf]{002}{<}IF{<
}VA|50{>}>0{>}{<}IF{<}VA$WO{>}>6{>}{<}PRNeed 3 empty windows{
>}{<}EX{>}{<}EI{>}[JM_]2.cmline[Q2_]{<}SX25,{<}VA$XD{>}{>}{<}
SX13,{<}VA$NW{>}{>}{<}SX25,"[BX_]d xd="+{<}IS25{>}+",nw="+{<}
IS13{>}+"[Q2_]"{>}[BX_]d xd=0,nw=1[Q2_]{<}SX13,{<}IS50{>}{>}{
<}SX50,{<}VA$ED{>}{>}[JM_]2.GetPath[Q2_]{<}SX26,{<}IS50{>}+"\
LFN.TMP"{>}[BX_]es 1[Q2_]{<}SX50,{<}IS13{>}{>}{<}IF"\"{238}{<
}IS50{>}<0{>}{<}SX27,{<}IS50{>}{>}{<}IF":"{238}{<}IS50{>}==1{
>}{<}SV14,:{>}{<}XS50,14,14,,18{>}{<}SX50,{<}IS18{>}{>}{<}SX1
8,{<}VA$DV{>}{>}[BX_]{<}PV14{>}:[Q2_]{<}
EI{>}{<}SX13,{<}VA$PA{>}+"\"{>}{<}SX50,{<}IS13{>}+{<}IS50{>}{
>}{<}IF":"{238}{<}IS27{>}==1{>}[BX_]{<}PV18{>}:[Q2_]{<}EI{>}{
<}EI{>}{<}IF":"{238}{<}IS50{>}<>1{>}{<}SX50,{<}VA$DV{>}+":"+{
<}IS50{>}{>}{<}EI{>}{<}IF({<}IS50{>}+"|"){240}"\|"{>}{<}SX50,
{<}IS50{>}+"*.*"{>}{<}EI{>}{<}SX13,{<}IS50{>}{>}{<}SU14,{<}IF
{<}VA|15{>}>0{>}[BX_]func #{<}PV15{>}[Q2_][BX_]ab/nv[Q2_]{<}E
I{>}{<}IF{<}VA|16{>}>0{>}[BX_]func #{<}PV16{>}[Q2_][BX_]ab/nv
[Q2_]{<}EI{>}{<}IF{<}VA|17{>}>0{>}[BX_]func #{<}PV17{>}[Q2_][
BX_]ab/nv[Q2_]{<}EI{>}{>}{<}SU18,[BX_]window n[Q2_]{<}IF@NOT(
{<}ER{>}){>}{<}EX{>}{<}EI{>}{<}GT14{>}{<}PV25{>}{<}PRNo windo
w{>}{<}EX1{>}{>}{<}SU19,{<}LBJ{>}[BX_]se [wC][Q2_]{<}IF@NOT(
{<}ER{>}){>}[LB_][DF_]{<}SX20,39{>}{<}CUK,20{>}[CR_]{<}LBK{>}
[DF_]{<}SV20{>}{<}IF"File(s)"{238}{<}IS20{>}<0{>}{<}SX21,0{>}
{<}IF{<}IS20{>}{240}""{>}{<}SX21,1{>}{<}EI{>}[XD_][DF_][
BX_]se/f {252} {252}[Q2_][DF_]{<}SV20{>}{<}IF{<}IS20{>}==" "{
>}[XD_]{<}SX20,15{>}{<}CUL,20{>}[CR_]{<}LBL{>}[DF_][BX_]se/f{032}
[wC][Q2_][DF_]{<}SV20{>}{<}EI{>}[XD_]{<}IF{<}VA$FE{>}<1{>}{<
}IF".."{240}{<}IS20{>}!{<}IS20{>}{240}".DIR"!{<}IS20{>}{240}"
"{>}{<}GLJ{>}{<}EI{>}{<}IF{<}PV21{>}>0{>}{<}SX21,2{>}{<}EI{>
}{<}EX{>}{<}EI{>}{<}GT14{>}{<}SV26,Dirsfn file not found: {>}
{<}LBM{>}{<}SV20,|{>}{<}EX{>}{<}EI{>}{<}EI{>}[BX_]ab/nv[Q2_]{
<}GLM{>}{>};*;[cr|lf]{<}IF{<}VA|50{>}>(76-{<}VA|26{>}){>}{<}S
X26,{<}VA|50{>}+{<}VA|26{>}-76{>}{<}SX26,"Dirspec too long by
"+{<}IS26{>}{>}{<}LBO{>}{<}PV25{>}[BC_]{<}PV616{>}[GT_]{<}IF
{<}VA|27{>}>0{>}{<}SX26,{<}IS26{>}+{<}IS27{>}{>}{<}EI{>}{<}PR
@26{>}{<}EX{>}{<}EI{>}[DX_][BX_]ernv {<}PV26{>}[Q2_]{<}GT18{>
}{<}SX15,{<}VA
$WN{>}{>}[BX_]dos/nv/x/z /c kmd/c dir/a:-h-r-s/x "{<}PV50{>}"
>{<}PV26{>}[Q2_][BX_]ne/100[Q2_][BX_]me {<}PV26{>}[Q2_][TF_][
BX_]se {252}Directory of {252}[Q2_]{<}IF{<}ER{>}{>}{<}LBN{>}{
<}GT14{>}{<}SV26,Bad dirspec {>}{<}GLO{>}{<}EI{>}[DF_][BX_]se
/f [wC][Q2_][DF_]{<}SV51{>}[XD_][CR_][CD_]{<}IF{<}VA$FE{>}>0
{>}{<}GLN{>}{<}EI{>}[CU_]{<}IF@UPR({<}IS50{>})==@UPR({<}IS51{
>}){>}{<}SX50,{<}IS50{>}+"\"{>}{<}EI{>}{<}SV51,\{>}[JM_]2.XSR
[Q2_]{<}SX22,{<}IS54{>}{>}{<}SX27,{<}IS54{>}{>}{<}SX50,{<}IS5
2{>}+"\"{>}[JM_]2.sfn[Q2_]{<}SX13,{<}IS50{>}{>}{<}SX50,{<}IS1
3{>}+"\"+{<}IS22{>}{>}{<}IF{<}VA|27{>}>0{>}{<}SX27,""""+{<}IS
13{>}+"\"" + """+{<}IS27{>}+"""{>}{<}EI{>}{<}IF{<}VA|27{>}<1{
>}{<}SX27,{<}IS13{>}{>}{<}EI{>}{<}GT18{>}{<}SX16,{<}VA$WN{>}{
>}[BX_]dir/pa {<}PV13{>}\[Q2_][BF_][DF_][BX_]seb _[Q2_][CR_]
[CR_][DF_][DN_][CU_][DF_][TF_][DF_][DN_]{<}SX17,{<}VA$WA{>}{>
}{<}PRWorking{>}{<}LBP{>}[BX_]func #{<}PV15{>}[Q2_]{<}GT19{>}
{<}IF{<}IS20{>}<>"|"{>}{<}GT18{>}[BX_]dir {<}PV13{>}\{<}IF{<}
PV21{>}<1{>}{<}PV20{>}{<}EI{>}[Q2_]{<}IF{<}PV21{>}>1{>}{<}IF{
<}IS20{>}{240}"."{>}{<}SX20,{<}VA@20.1{>}{>}{<}EI{>}[TF_][BX_
]se/f {252}{<}PV20{>} {252}[Q2_]{<}EI{>}[DF_][BX_]se [wC][Q2
_][DF_]{<}SV26{>}[BX_]ab/nv[Q2_][BX_]func #{<}PV16{>}[Q2_]{<}
GT26{>}{<}GLP{>}{<}EI{>}{<}IF"t f"{238}{<}IS26{>}<0{>}{<}SV26
,Dirsfn {>}{<}EI{>}[BX_]func #{<}PV16{>}[Q2_]{<}SV50,{>}[JM_]
2.dirlfn[Q2_][TF_]{<}GLO{>}{<}EI{>}{<}PRNo dirspec{>}{002}[cr
|lf][cr|lf]{{;5attrib,ca*,chdir,copy,copy/mv,del,dir*,me,mkdi
r,ne*,ren,re*,rmdir,sa,sad,sfn,st}} Manage File|Dir using Lon
g or 8.3 File|Dir Name Win32 Only RJH 2/16/04[cr|lf]{002}{<
}SX02,{<}IS50{>}{>}{<}SX50,{<}VA$FR{>}{>}[JM_]2.@lwr[Q2_]{<}S
X03,{<}IS50{>}{>}{<}PR {>}{<}
IF{<}VA|13{>}<1{>}[JM_]2.cmline[Q2_]{<}EI{>}{<}SV04,{>}{<}IF{
<}IS03{>}{240}"/"{>}{<}SX04,"/"+{<}VA@03/2{>}{>}{<}SX03,{<}VA
@03/1{>}{>}{<}EI{>}{<}IF"attribcopyren"{240}{<}IS03{>}&{<}IS0
3{>}<>"re"{>}{<}IF","{238}{<}IS02{>}<1{>}{<}LBA{>}{<}PRBad ar
gument{>}{<}EX{>}{<}EI{>}{<}SX05,{<}IS02{>}{>}{<}SV06,,{>}{<}
XS05,06,02,,07{>}{<}GLB{>}{<}EI{>}{<}IF{<}VA|02{>}<1{>}{<}IF{
<}IS03{>}{240}"mk"{>}{<}GLA{>}{<}EI{>}{<}IF{<}VA$WS{>}>1{>}{<
}SX02,{<}VA$DR{>}{>}{<}EI{>}{<}IF{<}VA|02{>}<1&{<}VA$DF{>}>0{
>}[DZ_]{<}SV02{>}{<}EI{>}{<}IF{<}VA|02{>}<1&{<}VA$WS{>}==1&"d
ir"{238}{<}IS03{>}<>2{>}{<}SX02,{<}VA$FP{>}{>}{<}EI{>}{<}IF{<
}VA|02{>}<1{>}{<}GLA{>}{<}EI{>}{<}EI{>}{<}LBB{>}{<}IF{<}IS02{
>}{240}"*"!{<}IS02{>}{240}"?"{>}{<}PRNo wildcards{>}{<}EX{>}{
<}EI{>}{<}IF"\"{238}{<}IS02{>}<0&":"{238}{<}IS02{>}<>1{>}{<}S
X02,{<}VA$PA{>}+"\"+{<}IS02{>}{>}{<}EI{>}{<}IF":"{238}{<}IS02
{>}<>1{>}{<}SX02,{<}VA$DV{>}+":"+{<}IS02{>}{>}{<}EI{>}{<}IF"d
ir"{238}{<}IS03{>}==2{>}{<}IF{<}IS03{>}{240}"mk"{>}[BX_]dos/n
v/x/z /c kmd/c md "{<}PV02{>}">NUL[Q2_]{<}EI{>}{<}IF"\[255+25
2+142]"{238}({<}IS02{>}+"[255+252+142]")<0{>}{<}SX02,{<}IS02{
>}+"\"{>}{<}EI{>}{<}EI{>}{<}SX50,{<}VA$ED{>}{>}[JM_]2.GetPath
[Q2_]{<}SX06,{<}IS50{>}+"\LFN.TMP"{>}{<}SX50,{<}IS02{>}{>}{<}
IF"nesadst"{240}{<}IS03{>}{>}{<}SX05,{<}VA$FP{>}{>}[BX_]es 1[
Q2_][BX_]ernv {<}PV06{>}[Q2_]{<}IF{<}IS03{>}{240}"d"{>}[BX_]s
ad {<}PV06{>}[Q2_][BX_]wait[Q2_]{<}GLE{>}{<}EI{>}{<}IF"sast"{
240}{<}IS03{>}{>}[BX_]sa/nv[Q2_][BX_]wait[Q2_]{<}EI{>}{<}GLD{
>}{<}LBC{>}{<}EI{>}{<}SV51,\{>}{<}SV05,{>}{<}SX09,0{>}[JM_]2.
XSR[Q2_]{<}SX50,{<}IS52{>}{>}{<}SX10,{<}IS54{>}{>}{<}IF"\"{23
8}{<}IS52{>}<0{>}{<}
SX09,2{>}{<}EI{>}{<}SV08,{>}{<}LBD{>}[DX_][BX_]window n[Q2_]{
<}IF{<}ER{>}{>}{<}PRNo window{>}{<}EX{>}{<}EI{>}{<}IF"nesast"
{240}{<}IS03{>}{>}[BX_]ne {<}PV06{>}[Q2_]{<}IF"sast"{240}{<}I
S03{>}{>}[BX_]me {<}PV05{>}[Q2_][BX_]wait[Q2_]{<}EI{>}[BX_]sa
/nv[Q2_][BX_]wait[Q2_][JM_]2.ab/nv[Q2_]{<}LBE{>}[BX_]dos/nv/x
/z /c kmd/c copy/-y {<}PV06{>} "{<}PV02{>}">NUL[Q2_][BX_]ernv
{<}PV06{>}[Q2_]{<}IF{<}IS03{>}{240}"st"{>}[JM_]2.ab/nv[Q2_]{
<}EI{>}{<}IF"sadst"{240}{<}IS03{>}{>}{<}SX03,{<}IS03{>}+" "{>
}{<}GLC{>}{<}EI{>}{<}SV03,new{>}{<}GLC{>}{<}EI{>}{<}IF{<}IS50
{>}{240}"\"{>}[JM_]2.XSR[Q2_]{<}SX11,{<}IS54{>}{>}{<}EI{>}[BX
_]dos/nv/x/z /c kmd/c dir/x {<}PV08{>}"{<}PV52{>}\{<}PV54{>}"
>{<}PV06{>}[Q2_]{<}SV08,/A:D {>}[BX_]es 1[Q2_][BX_]ca/100 {<}
PV06{>}[Q2_]{<}IF{<}VA|10{>}<1{>}{<}SV12,{>}{<}GLI{>}{<}EI{>}
[BX_]wait[Q2_][TF_][BX_]se/f {252} {<}PV10{>}[wC]{252}[Q2_]{<
}IF{<}ER{>}{>}[BX_]se/f {252} {<}PV10{>} {252}[Q2_]{<}IF@NOT
({<}ER{>}){>}[CR_][DF_][BX_]se/f {252} {252}[Q2_]{<}GLH{>}{<}
EI{>}[BX_]se/f {252}\{<}PV10{>}[wC]{252}[Q2_]{<}IF@NOT({<}ER{
>}){>}[JM_]2.ab/nv[Q2_]{<}SX50,{<}IS02{>}+"\"{>}{<}GLC{>}{<}E
I{>}[JM_]2.ab/nv[Q2_]{<}SX50,"file not found: "+{<}IS10{>}{>}
{<}IF{<}IS03{>}{240}"rm"{>}{<}SX50,{<}IS02{>}{>}{<}EI{>}{<}LB
F{>}{<}IF({<}IS50{>}+"[255+252+142]"){240}"\[255+252+142]"{>}
{<}SV51,\{>}[JM_]2.XSR[Q2_]{<}SX50,{<}IS52{>}{>}{<}EI{>}{<}SX
03,{<}IS03{>}+{<}IS04{>}+" "+{<}IS50{>}{>}{<}IF{<}VA|13{>}<0{
>}[BC_]{<}PV616{>}{<}EI{>}[GT_]{<}PR@03{>}{<}EX{>}{<}EI{>}[BX
_]seb [999][w-] [999][Q2_]{<}SX12,{<}IS02{>}{>}{<}IF{<}VA$CX{
>}<39{>}{<}SX12,{<}IS10{>}{>}{<}GLI{>}{<}EI{>}[CR_][DF_]{<}LB
G{>}[CL_]{<}IF{<}VA$CX{>}<>39{>}{<}GLG{>}{<}EI{>}{<}LBH{>}
[DF_]{<}SV12{>}{<}LBI{>}{<}SX05,"\"+{<}IS12{>}+{<}IS05{>}{>}{
<}IF{<}VA|52{>}>0&{<}PV09{>}<2{>}{<}IF{<}IS52{>}{240}"\"{>}{<
}SX50,{<}IS52{>}{>}{<}LBJ{>}[JM_]2.ab/nv[Q2_]{<}SX10,{<}IS54{
>}{>}{<}GLD{>}{<}EI{>}{<}IF{<}PV09{>}<1{>}{<}SX09,1{>}{<}SX50
,{<}IS52{>}+"\"{>}{<}GLJ{>}{<}EI{>}{<}EI{>}[JM_]2.ab/nv[Q2_];
*;[cr|lf]{<}SX50,@UPR({<}IS52{>}+{<}IS05{>}){>}{<}IF{<}IS03{>
}{238}"sfnsad st "<0{>}[BX_]es 1[Q2_]{<}IF{<}IS03{>}{240}"at"
{>}[BX_]attrib {<}PV50{>},{<}PV07{>}[Q2_]{<}GLF{>}{<}EI{>}{<}
IF"rencopy "{240}{<}IS03{>}&{<}IS03{>}<>"re"{>}{<}SV11,/Y{>}{
<}SX02,{<}IS07{>}{>}{<}IF{<}IS03{>}{240}"r"{>}{<}IF":"{238}{<
}IS07{>}==1{>}{<}IF{<}VA@50:1{>}<>{<}VA@07:1{>}{>}{<}SV50,Not
same device (use COPY/MV){>}{<}GLF{>}{<}EI{>}{<}EI{>}{<}SV03
,ren {>}{<}IF{<}IS07{>}{240}"\"{>}{<}SX11,{<}IS50{>}{>}{<}SX5
0,{<}IS07{>}{>}[JM_]2.XSR[Q2_]{<}SX07,{<}IS54{>}{>}{<}SX50,{<
}IS11{>}{>}{<}EI{>}{<}IF"\"{238}{<}IS02{>}<0{>}[JM_]2.XSR[Q2_
]{<}SX02,{<}IS52{>}+"\"+{<}IS02{>}{>}{<}EI{>}{<}SV11,{>}{<}EI
{>}[BX_]dos/nv/x/z /c kmd/c {<}PV03{>}{<}PV11{>} "{<}PV50{>}"
"{<}PV07{>}">NUL[Q2_]{<}SX03," "+{<}VA@03 1{>}{>}{<}SX07,{<}
IS50{>}{>}{<}GLB{>}{<}EI{>}{<}IF" ren copy"{240}{<}IS03{>}&{<
}IS03{>}<>"re"{>}{<}IF{<}IS04{>}{240}"mv"{>}[BX_]dos/nv/x/z /
c kmd/c del "{<}PV07{>}">NUL[Q2_]{<}EI{>}{<}SX50,""""+{<}IS07
{>}+""" """+{<}IS50{>}+"""{>}{<}GLF{>}{<}EI{>}{<}IF"del"{240}
{<}IS03{>}{>}[BX_]ernv {<}PV50{>}[Q2_]{<}GLF{>}{<}EI{>}{<}IF"
canew"{240}{<}IS03{>}{>}[JM_]2.HIDE:03-04,50,616[Q2_][JM_]2.C
allOrGo{<}PV04{>}[Q2_]{<}IF{<}PV51{>}==1{>}[JM_]2.reca[Q2_]{<
}EI{>}[JM_]2.UNHIDE[Q2_]{<}GLF{>}{<}EI{>}{<}IF{<}IS03{>}{240}
"me"{>}{<}IF{<}VA$WS{>}==1{>}[GT_][BX_]
me {<}PV50{>}[Q2_]{<}EI{>}{<}GLF{>}{<}EI{>}[BX_]{<}PV03{>}/nv
{<}PV50{>}[Q2_]{<}EI{>}{<}GLF{>}{002}[cr|lf][cr|lf]{{M}}[cr|
lf]End of LFN Utils[cr|lf][cr|lf]
-nd
XPLeNCODE
Help File Encode Block:
XPLeNCODE v2.0
b-gin [UNTITLED]
{attrib,ca*,ca,chdir,copy,copy/mv,del,dir*,dir,me,mkdir,ne*,n
e,ren,re*,re,rmdir,sa,sad,sfn,st}[cr|lf][cr|lf]Manage Long an
d/or 8.3 File|Dir Names in Win32 R.J.Holmgren 2/14/04[cr|lf
][cr|lf]These frames accept as argument CMline input, a DIRec
tory spec, a filename DeFined in text, or the currently displ
ayed file (in that priority, unless illogical e.g. CHDIR won'
t accept a filespec argument). Single {file|dir}names only (
wildcards NOT accepted). The path+{file|dir}spec may consist{032}
of any combination of Long {<}MDBO{>}or{<}MDNM{>} 8.3 Path or
File Names. N.B.: {<}MDBO{>}Do NOT use quotation marks{<}MDN
M{>} ("file name") with LFNs. A {<}MDBO{>}comma{<}MDNM{>} sep
arates two filespecs[cr|lf][cr|lf]Usages (17):[cr|lf]------[c
r|lf]ATTRIB filename,#{tab} Set ATTRIBute bit, where #=0 [R/W
] or 1 [R-O][cr|lf]CA[/#] filename CAll [d:\path\]fi
lename ["#"=DisplayType][cr|lf]CHDIR dirspec{tab}{tab} CHange
logged DIRectory ["CD" NOT implemented!][cr|lf]COPY file1,fi
le2{tab} COPY (note comma "," between filespecs)[cr|lf]COPY/M
V file1,file2{tab} COPY/MV (note comma ",")[cr|lf]DEL filenam
e{tab} DELete [d:\path\]filename[cr|lf]DIR[/switches
] filename{tab}DIR [d:\path\]filename[cr|lf]ME filen
ame{tab} MErge [d:\path\]filename in current file[cr
|lf]MKDIR dirspec{tab}{tab} MaKe new DIRectory ["MD" not lega
l in XyWrite][cr|lf]NE[/#] filename Open NEw [d:\pat
h\]filename[cr|lf]RE[/#] filename REad NEw [d:\path\
]filename[cr|lf]REN file1,file2{tab}{tab} REName [d:\path\]fi
le1 and file2 (note comma ",")[cr|lf]RMDIR dirspec{tab}{tab}{032}
ReMove (delete) DIRectory ["RD" not legal][cr|lf]SA filename<
Helpkey>{tab} SAve {<}MDBO{>}current file{<}MDNM{>} as [d:\p
ath\]file[cr|lf]SAD filename{tab} SAve {<}MDBO{>}De
fined block{<}MDNM{>} as [d:\path\]file[cr|lf]ST filename{tab} STore {<}MDBO{>}current file{<}MDNM{>} as [d:\path
\]file[cr|lf][cr|lf]{tab}Programmer Tool:[cr|lf]SFN filename<
Helpkey>{tab} Report S
hort File Name (SFN) of LFN or[cr|lf]{tab}{tab}{tab} 8.3 fi
le (cf. frame LFN). S/G50 In/Out[cr|lf][cr|lf]Examples:[cr|lf
]{tab}CA Glad Preacher.txt <==if located in current
dir[cr|lf]{tab}CA/2 F:\NEW\PeachyKeen\Glad Preacher.txt[cr|lf]{tab}{tab}The above spec is identical to these two
specs:[cr|lf]{tab}CA/2 F:\NEW\PEACHY~1\Glad Preacher.txt[cr|lf]{tab}CA/2 F:\NEW\PeachyKeen\GLAD_P~1.TXT
[cr|lf]{tab}DEL F:\NEW\PeachyKeen\GLAD_P~1.TXT[cr|lf
]{tab}NE/100 F:\NEW\PeachyKeen\Glad Preacher.txt[cr|
lf]{tab}SA F:\NEW\PEACHY~1\Glad Preacher.txt[cr|lf]{
tab}REN Glad Preacher.txt,Sad Sack.text[cr|lf]{tab}A
TTRIB Sad Sack.text,1[cr|lf][cr|lf]If you try to cre
ate a NEw file which already exists, a DOS prompt asks whethe
r to "Overwrite", i.e. {<}MDBO{>}erase{<}MDNM{>}, the old fil
e and create a NEw one under the same name (Y|N). If you{032}
respond "N"o, existing file is CAlled instead[cr|lf]CAlled, N
Ew, and REad files are displayed with user's current DisplayT
ype VADT; this can be modified by issuing CA|NE|RE{<}MDBO{>}/
#{<}MDNM{>}, where "#" is the desired Display Type (e.g. 100=
eXPanded,1=Draft,2=P/L,4=Graphics,9=Draft No Markers, etc).[c
r|lf]Filename LFN.TMP in Editor's directory is reserved[cr|lf
][cr|lf]{<}MDBO{>}Required File: KMD.EXE, in the DOS PATH{<}
MDNM{>}[cr|lf]Go {<}MDSO{>}{<}LBLink{<}SV50,DirLFN*{>}[JM_]2.
Help[Q2_]{>}here{<}MDNM{>} for full information.[cr|lf]{<}FC{
>}[cr|lf]Renumber in PACK mode[cr|lf]Default Save/Get Range=[
;00,01] 02-11,50-54,616[cr|lf]OPTIONs (2): RANGE 02-11 FREEZE
01[cr|lf]{<}FL{>}[cr|lf]-{tab}-{tab}-{tab}-{tab}-{tab}-{tab}
-{tab}-{tab}-{tab}-[cr|lf][cr|lf]{LFN*,DirLFN*,LFN,DirLFN,Dir
SFN}[cr|lf][cr|lf]Long File Names R.J.Holmgren 2/16/04[cr|lf
]Report or Call Long File Name (note {<}MDUL{>}required file{
<}MDNM{>}, described below)[cr|lf][cr|lf]{<}MDBO{>}LFN report
s the Long FileName ("LFN") of the current file or DIRect
ory listing [default], or of a specified file{<}MDNM{>}. Like
WinNT itself, LFN treats case-SeNsItIvE file or directory na
mes as "long" filenames[cr|lf][cr|lf]Usages (2):[cr|lf]{tab}1
{046} Normal:[cr|lf]LFN[/switch/switch...] [[d:\path\]8.3_filespe
c|DIRspec][cr|lf]{tab}2. Within directory displays,{032}
pointing at dir|file:[cr|lf]LFN[/switch/switch...][c
r|lf][cr|lf]LFN works with already-open FIND and DIRL display
s[cr|lf]Already-open {<}MDBO{>}Read-only DIRectory displays{<
}MDNM{>} (i.e. VAXD=1) {<}MDBO{>}do NOT work{<}MDNM{>}; eithe
r set "d xd=0", or use DIRLFN instead (see below), e.g.[c
r|lf] DIRLFN XYWWWEB*.*[cr|lf]Wildcards are NOT per
mitted in filespec|DIRspec (use DIRLFN instead)[cr|lf][cr|lf]
Optional switches (5):[cr|lf]{tab}/FI=Filename only[cr|lf]{ta
b}/LO=Only report LFNs (skip 8.3 path+file)[cr|lf]{tab}/NV=Su
ppress PRompt[cr|lf]{tab}/PV=Insert LFN at current cursor pos
ition [text|CMline][cr|lf]{tab} /PV puts the LFN at right te
xt margin in DIRectory displays[cr|lf][cr|lf]{tab}{tab}Progra
mmer Tool:[cr|lf]{tab}/CK=S/G 51 Out=1 if file is LFN or 0 if
SFN[cr|lf]{tab} (ShortFileName [;8.3])[cr|lf][cr|lf]Defaul
t action = Report on PRompt line the d:\path\[long]filename o
f current file or DIRectory listing.[cr|lf]On exit, Save/Get{032}
50 contains the [L]FN[cr|lf]Filename LFNTMP.TMP in Editor's d
irectory is reserved![cr|lf][cr|lf]Example: LFN/FI/PV MYFILE~
1.TXT[cr|lf][cr|lf]{<}MDBO{>}DIRLFN and DIRSFN appen
d the Long Path+File Name after each directory or file listin
g in a XyWrite DIRectory display{<}MDNM{>}.[cr|lf]The resulti
ng DIR display may be used normally (to CAll files, to CHDIR,
etc)[cr|lf]DIRLFN may be executed against an already-open DI
Rectory display (if not Read-only, i.e. VAXD<>1), {<}MDBO{>}o
r{<}MDNM{>} you may specify the D:\PATH[\FILEMASK] to display
(DIRLFN manages VAXD internally)[cr|lf]DIRSFN displays a usa
ble XyWrite DIRectory of an LFN dirmask, e.g.:[cr|lf]{tab}DIR
SFN d:\long path\l
ong names*[cr|lf]{tab}DIRSFN My Big Opus Chapter Num
ber *[cr|lf]{tab}DIRSFN \My Big Opus\Chapter*[cr|lf]The result of both DIRLFN and DIRSFN is a DIR displa
y of all matching {file|dir}specs in 8.3 {<}MDBO{>}and{<}MDNM
{>} LFN format, suitable for CAlling etc[cr|lf]Files|Dirs whi
ch are 8.3 throughout their {<}MDUL{>}entire path{<}MDNM{>} a
re ignored[cr|lf]Hidden Files|Dirs are ignored (XyWrite does{032}
not recognize them)[cr|lf][cr|lf]Usage:[cr|lf]{tab}DIRLFN[/Xy
Write_DIR_switches 8.3_DIRmask][cr|lf]{tab}DIRSFN [L
FN or 8.3_DIRmask][cr|lf][cr|lf]Examples:[cr|lf]{tab
}DIRLFN D:\MSWORD\*.DOC[cr|lf]{tab}DIRLFN/NA C:\PROG
RA~1[cr|lf]{tab}DIRSFN C:\Program Files\Resource Kit
[cr|lf]{tab}DIRSFN C:\PROGRA~1\Resource Kit
[cr|lf][cr|lf]{<}MDBU{>}Required file:{<}MDNM{>}[cr|lf]Downlo
ad a {<}MDSO{>}{<}LBLink{<}SV50,users.datarealm.com/xywwweb/WIN95CM
D.ZIP{>}[JM_]2.gethttp[Q2_]{>}special version of a Windows 20
00 CMD.EXE command processor, patched to operate in Win9x esp
ecially, but functional in ALL Win32 OpSyses{<}MDNM{>}. Situa
te this "KMD.EXE" in the {<}MDIT{>}first{<}MDNM{>} directory{032}
in the DOS PATH, usually C:\WINDOWS or C:\WINNT\system32 (she
ll to DOS and command "echo %PATH%" to see your PATH spec
). KMD.EXE does {<}MDBO{>}NOT{<}MDNM{>} replace your COMSPEC{032}
or affect any aspect of your computer! It merely enables the{032}
extra functionality of an advanced NT command processor, {<}M
DUL{>}which operates consistently across all Win32 OSes{<}MDN
M{>}, to be exploited by U2 (or by you, too) when KMD.EXE is{032}
intentionally launched as a program[cr|lf]{<}FC{>}[cr|lf]Renu
mber LFN and DIRLFN {<}MDBO{>}together{<}MDNM{>} in PACK mode
[cr|lf]LFN+DIRLFN Default Save/Get Range=[;00,50] 01-24,51-63
[cr|lf]OPTIONs (2): RANGE 01-24 FREEZE 05[cr|lf][cr|lf]Renum
ber DIRSFN and ATTRIB,CA*,CHDIR,COPY,COPY/MV,DEL,DIR*,ME,MKDI
R,NE*,REN,RE*,RMDIR,SA,SAD,SFN,ST {<}MDBO{>}together{<}
MDNM{>} in PACK mode[cr|lf]DIRSFN + ATTRIB,... Default Save/G
et Range=[;00,50,616] 01-22,25-27,51-63[cr|lf]OPTION: RANGE 0
1-22[cr|lf]{<}FL{>}[cr|lf]-{tab}-{tab}-{tab}-{tab}-{tab}-{tab
}-{tab}-{tab}-{tab}-[cr|lf][cr|lf]
-nd
XPLeNCODE
-----------------------------
Robert Holmgren
holmgren@xxxxxxxx
-----------------------------