maloff@calgary.UUCP (Sheldon Maloff) (08/22/87)
I'm hoping somebody out there can help me with this. I'm converting a
'make' program to compile and link under Lattice C 3.03. Everything works
except the 'touch' module. I'm having problems with the gemdos call
'Fdatime().'
The program lines looks like:
#define Fdatime(a,b,c) gemdos(0x57,a,b,c)
.
.
.
unsigned long time; /* declarations of variables */
short fd; /* file handle */
.
. /* code to open a file via gemdos */
. /* and set the time */
.
Fdatime(fd,&time,1); /* time stamp the file */
Fclose(fd);
The program bombs in Fdatime() with 2 bombs (buss error). I've heard the
'Hitchhiker's Guide to the Bios' is wrong and was recommended to try
Fdatime(&time,fd,1); /* first two args switched */
The program now bombs with 3 bombs (address error).
I think I've tried almost every combination of passing in (short) and
(long) casts within the function call, but I still get the same
two errors. After two days of this, I'm getting rather annoyed. What
am I doing wrong? The variable fd = 6, and time = valid Dos time format,
and the program always throws up at the Fdatime() function. This isn't
the first time I've had a fight with the Lattice C compiler, but this time
I don't know if its me, Lattice, or the OS. Gemdos calls are new to me.
Sheldon.
seismo!calgary!maloff
maloff@calgary.UUCP