Cross Reference update
Posted: Thu Aug 21, 2008 1:37 pm
Hey
Guys once again I'm here to get your help.
As said, I'm working on a Cross Referencer for Novix, as a support tool for QBinux.
I also use some Novix code and here's the deal:
While breaking up a line from a file in several pieces with the FUNCTION's Crack & GetCracked something goes wrong. I'm running the code in XP due to the extended dir-functions we don't have in DosBox.
First and all, here's the source of the entire XR:
This is the file I'm converting to HTML:
And for some odd reason, this is the outcome:
I was trying to get the file-part of the line with bc, so I could create a link to it, but due to characters in between, it doesn't work... Can someone help me out here?
THx
Guys once again I'm here to get your help.
As said, I'm working on a Cross Referencer for Novix, as a support tool for QBinux.
I also use some Novix code and here's the deal:
While breaking up a line from a file in several pieces with the FUNCTION's Crack & GetCracked something goes wrong. I'm running the code in XP due to the extended dir-functions we don't have in DosBox.
First and all, here's the source of the entire XR:
Code: Select all
DECLARE FUNCTION Crack$ (s AS STRING, seperator AS STRING, DoNotRemoveQuote AS INTEGER)
DECLARE FUNCTION GetCracked$ (s AS STRING, index AS INTEGER)
DECLARE FUNCTION trim$ (char AS STRING)
DECLARE SUB MakeFooter (filenr!)
DECLARE SUB MakeHTML ()
DECLARE SUB MakeFileExtend (filenr!, FileName AS STRING)
DECLARE SUB MakeDirExtend (filenr!, DirName AS STRING)
DECLARE SUB MakeDirBase (filenr!)
DECLARE FUNCTION MakeDirFile$ (map AS STRING, dirmap AS INTEGER, filemap AS INTEGER)
DECLARE SUB MakeHTM
DECLARE FUNCTION ten$ (var!)
DECLARE FUNCTION strim$ (strvar!)
DECLARE SUB Make (map1 AS STRING, map2 AS STRING)
DECLARE SUB MakeHeader (filenr!, title AS STRING, baseurl AS STRING)
DIM SHARED banner AS STRING
DIM SHARED DirFile AS STRING
DIM SHARED FileFile AS STRING
DIM SHARED Server AS STRING
DIM SHARED TempServer AS STRING
banner = "Novix v2.5.0.4 / Xivon v11.4"
PRINT "Cross Reference Builder ?0.1"
PRINT "Copyright (C) 2008, McClouth Software"
PRINT "Written by Sebastian McClouth"
PRINT "....................................."
INPUT "Map: ", map$
Server = map$
TempServer = "tmp\" + Server
MakeHTML
FUNCTION Crack$ (s AS STRING, seperator AS STRING, DoNotRemoveQuote AS INTEGER)
IF INSTR(s, seperator) THEN
FOR a = 1 TO LEN(s$)
g$ = MID$(s$, a, 1)
IF g$ = LEFT$(seperator, 1) AND inq = 0 THEN
IF a < LEN(s$) THEN
IF LEN(seperator) = 2 THEN pp = 1 ELSE pp = 0
IF MID$(s$, a + pp, 1) = RIGHT$(seperator, 1) THEN
fstr$ = fstr$ + CHR$(LEN(nstr$)) + nstr$
nstr$ = ""
tnum = tnum + 1
END IF
END IF
ELSEIF g$ = CHR$(34) AND inq = 1 THEN
inq = 0
IF DoNotRemoveQuote <0> 255 THEN nstr$ = LEFT$(nstr$, 255)
END IF
ELSEIF g$ = CHR$(34) AND inq = 0 THEN
inq = 1
IF DoNotRemoveQuote <0> 255 THEN nstr$ = LEFT$(nstr$, 255)
END IF
ELSE
nstr$ = nstr$ + g$
IF LEN(nstr$) > 255 THEN nstr$ = LEFT$(nstr$, 255)
END IF
IF tnum >= 128 THEN EXIT FOR
NEXT
fstr$ = fstr$ + CHR$(LEN(nstr$)) + nstr$
tnum = tnum + 1
Crack$ = MKI$(tnum) + fstr$
ELSE
Crack$ = MKI$(1) + CHR$(LEN(s)) + s
END IF
END FUNCTION
FUNCTION GetCracked$ (s AS STRING, index AS INTEGER)
IF LEN(s) < 2 THEN EXIT FUNCTION
max = CVI(LEFT$(s, 2))
IF index <1> max THEN EXIT FUNCTION
offs = 3
FOR a = 1 TO index
m$ = MID$(s, offs + 1, ASC(MID$(s, offs, 1)))
offs = offs + 1 + LEN(m$)
NEXT
GetCracked$ = m$
END FUNCTION
SUB MakeDirBase (filenr)
PRINT #filenr, "<table>"
PRINT #filenr, " <tr>"
PRINT #filenr, " <td>"
PRINT #filenr, " <td><b>Name</b>"
PRINT #filenr, " <td><b>Size</b>"
PRINT #filenr, " <td><b>Last modified (GMT)</b>"
PRINT #filenr, " <td><b>Description</b>"
END SUB
SUB MakeDirExtend (filenr, DirName AS STRING)
PRINT #filenr, " <tr>"
PRINT #filenr, " <td>"
PRINT #filenr, " <td><a href=" + CHR$(34) + Server + ">" + DirName + "</a>"
PRINT #filenr, " <td>"
PRINT #filenr, " <td>"
PRINT #filenr, " <td>"
END SUB
FUNCTION MakeDirFile$ (map AS STRING, dirmap AS INTEGER, filemap AS INTEGER)
IF dirmap > 0 THEN
mapdir$ = LEFT$(map, 8) + ".dir"
SHELL "dir /b /ad " + map + " >" + mapdir$
ELSEIF filemap > 0 THEN
mapdir$ = LEFT$(map, 8) + ".fil"
SHELL "dir /b /a-d " + map + " >" + mapdir$
END IF
MakeDirFile = mapdir$
END FUNCTION
SUB MakeFileExtend (filenr, FileName AS STRING)
PRINT #filenr, " <tr>"
PRINT #filenr, " <td>"
PRINT #filenr, " <td><a href=" + CHR$(34) + Server + ">" + FileName + "</a>"
PRINT #filenr, " <td>"
PRINT #filenr, " <td>"
PRINT #filenr, " <td>"
END SUB
SUB MakeFooter (filenr2)
PRINT #filenr2, "<hr>"
PRINT #filenr2, "<center>"
PRINT #filenr2, "<i>The original LXR software by the <a href=" + CHR$(34) + ">LXR Community</a>, this experimental version by <a href=" + CHR$(34) + ">McClouth software</a> for Novix (by Z!re).<br>"
PRINT #filenr2, "McClouth Software and NXR kindly hosted by <a href=" + CHR$(34) + ">ZoasterTech</a>."
PRINT #filenr2, ""
PRINT #filenr2, "</body>"
PRINT #filenr2, "</html>"
END SUB
SUB MakeHeader (filenr, title AS STRING, baseurl AS STRING)
PRINT #filenr, "<doctype>"
PRINT #filenr, "<html>"
PRINT #filenr, "<head>"
PRINT #filenr, "<title>" + title + "</title>"
PRINT #filenr, "<base>"
PRINT #filenr, ""
PRINT #filenr, "<body>"
PRINT #filenr, ""
PRINT #filenr, "<h1>"
PRINT #filenr, " <a href=" + CHR$(34) + ">"
PRINT #filenr, " McClouth Software</a>"
PRINT #filenr, " <a href=" + CHR$(34) + ">"
PRINT #filenr, " Novix Cross Reference</a><br>"
PRINT #filenr, banner
PRINT #filenr, "</h1>"
PRINT #filenr, ""
PRINT #filenr, "<hr>"
END SUB
SUB MakeHTML
DirFile = MakeDirFile(Server, 1, 0)
FileFile = MakeDirFile(Server, 0, 1)
PRINT "Processing " + Server + "..."
REM SHELL "MD " + tempServer
ff = FREEFILE
OPEN DirFile FOR INPUT AS #ff
ff2 = FREEFILE
OPEN TempServer + "\index.htm" FOR OUTPUT AS #ff2
MakeHeader ff2, "NXR - " + Server, "http://mcclouth.zoastertech.com/nxr/index.htm"
MakeDirBase ff2
DO WHILE NOT EOF(ff)
LINE INPUT #ff, temp$
MakeDirExtend ff2, temp$
LOOP
ff3 = FREEFILE
OPEN FileFile FOR INPUT AS #ff3
DO WHILE NOT EOF(ff3)
LINE INPUT #ff3, temp$
IF temp$ = "INDEX.HTM" THEN
ELSE
MakeFileExtend ff2, temp$
ff4 = FREEFILE
PRINT temp$
OPEN Server + "\" + temp$ FOR INPUT AS #ff4
ff5 = FREEFILE
OPEN TempServer + "\" + temp$ FOR OUTPUT AS #ff5
MakeHeader ff5, "NXR - " + Server + "\" + temp$, "http://mcclouth.zoastertech.com/nxr/index.htm"
DO WHILE NOT EOF(ff4)
LINE INPUT #ff4, Temp2$
IF LEFT$(Temp2$, 2) = "bc" THEN
Temp2$ = trim(Temp2$)
Temp2$ = Crack(Temp2$, " ", 0)
Last% = CVI(LEFT$(Temp2$, 2))
IF RIGHT$(GetCracked(Temp2$, Last%), 1) = ";" THEN
PRINT #ff5, LEFT$(Temp2$, LEN(Temp2$) - LEN(GetCracked(Temp2$, Last%))) + "<a href=" + CHR$(34) + LEFT$(Temp2$, LEN(Temp2$) - 1) + CHR$(34) + ">" + LEFT$(Temp2$, LEN(Temp2$) - 1) + "</a>" + _
RIGHT$(Temp2$, 1)
ELSE
PRINT #ff5, Temp2$
END IF
END IF
PRINT #ff5, Temp2$ + "<br>"
LOOP
MakeFooter ff5
CLOSE #ff5
CLOSE #ff4
END IF
LOOP
CLOSE #ff3
PRINT #ff2, "</table>"
MakeFooter ff2
CLOSE #ff2
CLOSE ff
END SUB
FUNCTION strim$ (strvar)
strim$ = trim$(STR$(strvar))
END FUNCTION
FUNCTION ten$ (var)
tempten$ = strim$(var)
END FUNCTION
FUNCTION trim$ (char AS STRING)
trim$ = LTRIM$(RTRIM$(char))
END FUNCTION
Code: Select all
@echo off
bin\numinc.exe
del *.obj
del Novix.exe
bc /o /Ot /Fs /G2 /Fpi /E /X bin\nvx25.ns5;
bc /o /Ot /Fs /G2 /Fpi /E /X bin\compiler.ns5;
bc /o /Ot /Fs /G2 /Fpi /E /X bin\execute.ns5;
bc /o /Ot /Fs /G2 /Fpi /E /X bin\nvxcode.ns5;
bc /o /Ot /Fs /G2 /Fpi /E /X bin\wrapper.ns5;
bc /o /Ot /Fs /G2 /Fpi /E /X bin\gui.ns5;
bc /o /Ot /Fs /G2 /Fpi /E /X bin\NVXFS.ns5;
pause
bc /o /Ot /Fs /G2 /Fpi /E /X bin\INCFILES.ns5;
ren nvx25.obj a.obj
ren compiler.obj b.obj
ren execute.obj c.obj
ren nvxcode.obj d.obj
ren wrapper.obj e.obj
ren gui.obj f.obj
ren NVXFS.obj g.obj
ren incfiles.obj h.obj
link a+b+c+d+e+f+(g)+(h),,nul,lib\novix.lib+c:\bc7\lib\bcl71efr.lib;
ren a.exe Novix.exe
del *.obj
Code: Select all
<doctype>
<html>
<head>
<title>NXR - novix25\COMPILE.BAT</title>
<base>
<body>
<h1>
<a href="http://mcclouth.zoastertech.com">
McClouth Software</a>
<a href="http://mcclouth.zoastertech.com/nxr/index.htm">
Novix Cross Reference</a><br>
Novix v2.5.0.4 / Xivon v11.4
</h1>
<hr>
@echo off<br>
<br>
bin\numinc.exe<br>
<br>
del *.obj<br>
del Novix.exe<br>
bc/o/Ot/Fs/G2/Fpi/E/X<a href=" bc/o/Ot/Fs/G2/Fpi/E/Xbin\nvx25.ns5"> bc/o/Ot/Fs/G2/Fpi/E/Xbin\nvx25.ns5</a>;
bc/o/Ot/Fs/G2/Fpi/E/Xbin\nvx25.ns5;<br>
bc/o/Ot/Fs/G2/Fpi/E/X<a href=" bc/o/Ot/Fs/G2/Fpi/E/Xbin\compiler.ns5"> bc/o/Ot/Fs/G2/Fpi/E/Xbin\compiler.ns5</a>;
bc/o/Ot/Fs/G2/Fpi/E/Xbin\compiler.ns5;<br>
bc/o/Ot/Fs/G2/Fpi/E/X<a href=" bc/o/Ot/Fs/G2/Fpi/E/Xbin\execute.ns5"> bc/o/Ot/Fs/G2/Fpi/E/Xbin\execute.ns5</a>;
bc/o/Ot/Fs/G2/Fpi/E/Xbin\execute.ns5;<br>
bc/o/Ot/Fs/G2/Fpi/E/X<a href=" bc/o/Ot/Fs/G2/Fpi/E/Xbin\nvxcode.ns5"> bc/o/Ot/Fs/G2/Fpi/E/Xbin\nvxcode.ns5</a>;
bc/o/Ot/Fs/G2/Fpi/E/Xbin\nvxcode.ns5;<br>
bc/o/Ot/Fs/G2/Fpi/E/X<a href=" bc/o/Ot/Fs/G2/Fpi/E/Xbin\wrapper.ns5"> bc/o/Ot/Fs/G2/Fpi/E/Xbin\wrapper.ns5</a>;
bc/o/Ot/Fs/G2/Fpi/E/Xbin\wrapper.ns5;<br>
bc/o/Ot/Fs/G2/Fpi/E/X<a href=" bc/o/Ot/Fs/G2/Fpi/E/Xbin\gui.ns5"> bc/o/Ot/Fs/G2/Fpi/E/Xbin\gui.ns5</a>;
bc/o/Ot/Fs/G2/Fpi/E/Xbin\gui.ns5;<br>
bc/o/Ot/Fs/G2/Fpi/E/X<a href=" bc/o/Ot/Fs/G2/Fpi/E/Xbin\NVXFS.ns5"> bc/o/Ot/Fs/G2/Fpi/E/Xbin\NVXFS.ns5</a>;
bc/o/Ot/Fs/G2/Fpi/E/Xbin\NVXFS.ns5;<br>
pause<br>
bc/o/Ot/Fs/G2/Fpi/E/X<a href=" bc/o/Ot/Fs/G2/Fpi/E/Xbin\INCFILES.ns5"> bc/o/Ot/Fs/G2/Fpi/E/Xbin\INCFILES.ns5</a>;
bc/o/Ot/Fs/G2/Fpi/E/Xbin\INCFILES.ns5;<br>
<br>
ren nvx25.obj a.obj<br>
ren compiler.obj b.obj<br>
ren execute.obj c.obj<br>
ren nvxcode.obj d.obj<br>
ren wrapper.obj e.obj<br>
ren gui.obj f.obj<br>
ren NVXFS.obj g.obj<br>
ren incfiles.obj h.obj<br>
<br>
link a+b+c+d+e+f+(g)+(h),,nul,lib\novix.lib+c:\bc7\lib\bcl71efr.lib;<br>
<br>
ren a.exe Novix.exe<br>
del *.obj<br>
<hr>
<center>
<i>The original LXR software by the <a href="http://sourceforge.net/projects/lxr">LXR Community</a>, this experimental version by <a href="mailto:mcclouth.software@gmail.com">McClouth software</a> for Novix (by Z!re).<br>
McClouth Software and NXR kindly hosted by <a href="http://zoastertech.com">ZoasterTech</a>.
</body>
</html>
THx