PROCEDURE GetShortPathNameA EXTERNAL "kernel32.dll":
DEFINE INPUT PARAMETER pFullName AS CHARACTER NO-UNDO.
DEFINE OUTPUT PARAMETER opShortName AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER pSize AS LONG NO-UNDO.
END.
/* Special function which transforms long pathnames into short ones */
FUNCTION GetShortFName RETURNS CHARACTER (pName AS CHAR):
DEFINE VARIABLE vS AS CHARACTER NO-UNDO.
DEFINE VARIABLE vLen AS INTEGER NO-UNDO.
vLen = LENGTH(pName).
vS = FILL(" ",vLen).
RUN GetShortPathNameA(pName,OUTPUT vS,vLen).
RETURN IF vS <> "" THEN TRIM(vS) ELSE pName .
END.
procedure fillCfg:
define var cFile as char no-undo.
run adecomm/_tmpfile.p ( "", ".cfg", output cFile ).
DEFINE VARIABLE vDlc AS CHARACTER NO-UNDO.
/* For windows we need to get DLC variable */
GET-KEY-VALUE SECTION "startup" KEY "DLC" VALUE vDlc.
/* Here I must use special api function to avoid long name */
os-command silent value(GetShortFName(vDLC + "\bin\showcfgd") + " " +
QUOTER(vDLC + "\progress.cfg") + "> " + quoter( cFile )).
/* I think to do so but it doesn't work?! */
/* os-command silent value(QUOTER(vDLC + "\bin\showcfgd") + " " + QUOTER(vDLC + "\progress.cfg") + "> " + quoter( cFile )). */
input from value( cFile ).
repeat:
define var cLine as char no-undo.
import unformatted cLine.
if cLine = "" then do:
release ttCfg.
next.
end. /* cLine = "" */
if not avail ttCfg then
create ttCfg.
assign
tLabels = tLabels + ( if tLabels ne "" then "," else "" )
+ replace( entry( 1, cLine, ": " ), " ", "" )
tValues = tValues + ( if tValues ne "" then chr(1) else "" )
+ trim( entry( 2, cLine, ": " ) ).
end. /* repeat */
input close. /* cFile */
/* os-command silent value( "del " + quoter( cFile ) ). */
end procedure. /* fillCfg */