* char get()
* VOID getfid()
* VOID getid()
- * int getline()
+ * VOID getSid()
+ * int as_getline()
* int getmap()
* char getnb()
* int more()
*p++ = 0;
}
+/*)Function VOID getSid (char *id)
+ *
+ * char * id a pointer to a string of
+ * maximum length NCPS
+ *
+ * getSid is derived from getid. It is called from newsym()
+ * in lksym.c, when an S-record has to be scanned. getSid accepts
+ * much more characters than getid, which is necessary for SDCC.
+ *
+ * The function getSid() scans the current input text line
+ * from the current position copying the next string
+ * into the external string buffer (id). The string ends when a space
+ * character (space, tab, \0) is found. The maximum number of
+ * characters copied is NCPS. If the input string is larger than
+ * NCPS characters then the string is truncated, if the input string
+ * is shorter than NCPS characters then the string is NULL filled.
+ * Intervening white space (SPACES and TABS) are skipped.
+ *
+ * local variables:
+ * char * p pointer to external string buffer
+ * int c current character value
+ *
+ * global variables:
+ * char ctype[] a character array which defines the
+ * type of character being processed.
+ * This index is the character
+ * being processed.
+ *
+ * called functions:
+ * char get() lklex.c
+ * char getnb() lklex.c
+ * VOID unget() lklex.c
+ *
+ * side effects:
+ * use of getnb(), get(), and unget() updates the
+ * global pointer ip the position in the current
+ * input text line.
+ */
+
+VOID
+getSid (id)
+char *id;
+{
+ register int c;
+ register char *p;
+
+ c = getnb();
+ p = id;
+ do {
+ if (p < &id[NCPS])
+ *p++ = c;
+ c = get();
+ } while (c != '\0' && c != ' ' && c != '\t');
+ unget(c);
+ while (p < &id[NCPS])
+ *p++ = 0;
+}
+
/*)Function VOID getfid(fid,c)
*
* char * str a pointer to a string of
- * maximum length FILENAME_MAX
+ * maximum length PATH_MAX
* int c this is first character to
* copy to the string buffer
*
- * The function getfid() scans the current input text line
- * from the current position copying the next string
- * into the external string buffer (str). The string ends when a
- * non SPACE type character is found. The maximum number of
- * characters copied is FILENAME_MAX. If the input string is larger than
- * FILENAME_MAX characters then the string is truncated, if the input string
- * is shorter than FILENAME_MAX characters then the string is NULL filled.
+ * The function getfid() scans the current input text line from
+ * the current position copying the next string into the external
+ * string buffer (str). The string ends when end of line is found.
+ * Trailing spacers are removed. The maximum number of characters
+ * copied is PATH_MAX. If the input string is larger than PATH_MAX
+ * characters then the string is truncated. The string is NULL
+ * terminated.
*
* local variables:
* char * p pointer to external string buffer
register char *p;
p = str;
- do {
- if (p < &str[FILENAME_MAX-1])
+ do
+ {
+ if (p < &str[PATH_MAX-1])
*p++ = c;
c = get();
- } while (c && ((ctype[c] != SPACE)||(c == ':')||(c == '\\')));
- while (p < &str[FILENAME_MAX])
- *p++ = 0;
+ if (c == ';')
+ while (c)
+ c = get();
+ } while (c);
+ /* trim trailing spaces */
+ --p;
+ while (p >= str && ctype[(int)*p] == SPACE)
+ --p;
+ /* terminate the string */
+ *(++p) = '\0';
}
/*)Function char getnb()
return (c);
}
-/*)Function int getline()
+/*)Function int as_getline()
*
- * The function getline() reads a line of input text from a
+ * The function as_getline() reads a line of input text from a
* .rel source text file, a .lnk command file or from stdin.
* Lines of text are processed from a single .lnk file or
* multiple .rel files until all files have been read.
* The input text line is copied into the global string ib[]
* and converted to a NULL terminated string. The function
- * getline() returns a (1) after succesfully reading a line
+ * as_getline() returns a (1) after succesfully reading a line
* or a (0) if all files have been read.
* This function also opens each input .lst file and output
* .rst file as each .rel file is processed.
*/
int
-getline()
+as_getline()
{
register int ftype;
register char *fid;
sfp = afile(fid, "rel", 0);
/* if a .cdb file exists then copy it over */
if (dflag && sfp && dfp && pass == 0) {
- FILE *xfp = afile(fid,"cdb",0);
+ FILE *xfp = afile(fid,"adb",0); //JCF: Nov 30, 2002
if (xfp) {
copyfile(dfp,xfp);
fclose(xfp);
}
}
if (uflag && pass != 0) {
+ SaveLinkedFilePath(fid); //Save the linked path for aomf51
if ((tfp = afile(fid, "lst", 0)) != NULL) {
if ((rfp = afile(fid, "rst", 1)) == NULL) {
fclose(tfp);