mirror of
https://github.com/ksherlock/gopher.git
synced 2025-01-20 00:30:09 +00:00
add time tool dependency (for later use)
This commit is contained in:
parent
8b771de8d2
commit
1d8bed53a7
114
main.c
114
main.c
@ -1,6 +1,8 @@
|
|||||||
#pragma optimize 79
|
#pragma optimize 79
|
||||||
|
|
||||||
#include <Locator.h>
|
#include <Locator.h>
|
||||||
|
#include <TimeTool.h>
|
||||||
|
#include <tcpip.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -16,10 +18,44 @@
|
|||||||
enum {
|
enum {
|
||||||
kLoaded = 1,
|
kLoaded = 1,
|
||||||
kStarted = 2,
|
kStarted = 2,
|
||||||
kConnected = 4
|
kConnected = 4,
|
||||||
|
|
||||||
|
kLoadError = -1,
|
||||||
|
kVersionError = -2
|
||||||
};
|
};
|
||||||
|
|
||||||
Word StartUp(displayPtr fx)
|
int StartUpTZ(void)
|
||||||
|
{
|
||||||
|
Word status;
|
||||||
|
Word flags = 0;
|
||||||
|
|
||||||
|
status = tiStatus();
|
||||||
|
|
||||||
|
if (_toolErr)
|
||||||
|
{
|
||||||
|
LoadOneTool(0x38, 0x104);
|
||||||
|
if (_toolErr == toolVersionErr) return kVersionError;
|
||||||
|
if (_toolErr) return kLoadError;
|
||||||
|
|
||||||
|
status = 0;
|
||||||
|
flags |= kLoaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tiVersion() < 0x0104)
|
||||||
|
{
|
||||||
|
return kVersionError;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!status)
|
||||||
|
{
|
||||||
|
tiStartUp();
|
||||||
|
flags |= kStarted;
|
||||||
|
}
|
||||||
|
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
int StartUpTCP(displayPtr fx)
|
||||||
{
|
{
|
||||||
word status;
|
word status;
|
||||||
word flags = 0;
|
word flags = 0;
|
||||||
@ -31,7 +67,8 @@ Word StartUp(displayPtr fx)
|
|||||||
if (_toolErr)
|
if (_toolErr)
|
||||||
{
|
{
|
||||||
LoadOneTool(54, 0x0300);
|
LoadOneTool(54, 0x0300);
|
||||||
if (_toolErr) return -1;
|
if (_toolErr == toolVersionErr) return kVersionError;
|
||||||
|
if (_toolErr) return kLoadError;
|
||||||
|
|
||||||
status = 0;
|
status = 0;
|
||||||
flags |= kLoaded;
|
flags |= kLoaded;
|
||||||
@ -43,14 +80,14 @@ Word StartUp(displayPtr fx)
|
|||||||
{
|
{
|
||||||
if (flags & kLoaded)
|
if (flags & kLoaded)
|
||||||
UnloadOneTool(54);
|
UnloadOneTool(54);
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
return kVersionError;
|
||||||
|
}
|
||||||
|
|
||||||
if (!status)
|
if (!status)
|
||||||
{
|
{
|
||||||
TCPIPStartUp();
|
TCPIPStartUp();
|
||||||
if (_toolErr) return -1;
|
if (_toolErr) return kLoadError;
|
||||||
flags |= kStarted;
|
flags |= kStarted;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,22 +101,32 @@ Word StartUp(displayPtr fx)
|
|||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShutDown(word flags, Boolean force, displayPtr fx)
|
void ShutDownTZ(int flags)
|
||||||
{
|
{
|
||||||
if (flags & kConnected)
|
if (flags <= 0) return;
|
||||||
{
|
|
||||||
TCPIPDisconnect(force, fx);
|
if (flags & kStarted) tiShutDown();
|
||||||
if (_toolErr) return;
|
if (flags & kLoaded) UnloadOneTool(0x38);
|
||||||
}
|
}
|
||||||
if (flags & kStarted)
|
|
||||||
{
|
void ShutDownTCP(int flags, Boolean force, displayPtr fx)
|
||||||
TCPIPShutDown();
|
{
|
||||||
if (_toolErr) return;
|
if (flags <= 0) return;
|
||||||
}
|
|
||||||
if (flags & kLoaded)
|
if (flags & kConnected)
|
||||||
{
|
{
|
||||||
UnloadOneTool(54);
|
TCPIPDisconnect(force, fx);
|
||||||
}
|
if (_toolErr) return;
|
||||||
|
}
|
||||||
|
if (flags & kStarted)
|
||||||
|
{
|
||||||
|
TCPIPShutDown();
|
||||||
|
if (_toolErr) return;
|
||||||
|
}
|
||||||
|
if (flags & kLoaded)
|
||||||
|
{
|
||||||
|
UnloadOneTool(54);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -128,7 +175,8 @@ char *get_url_filename(const char *cp, URLComponents *components)
|
|||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
Word mf;
|
int mf;
|
||||||
|
int tf;
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
|
|
||||||
@ -145,16 +193,29 @@ int main(int argc, char **argv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mf = StartUp(NULL);
|
|
||||||
|
|
||||||
if (mf == -1)
|
tf = StartUpTZ();
|
||||||
|
|
||||||
|
if (tf < 0)
|
||||||
{
|
{
|
||||||
|
fprintf(stderr, "Time Tool 1.0.4 or greater is required.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
mf = StartUpTCP(NULL);
|
||||||
|
|
||||||
|
if (mf < 0)
|
||||||
|
{
|
||||||
|
ShutDownTZ(tf);
|
||||||
fprintf(stderr, "Marinetti 3.0b3 or greater is required.\n");
|
fprintf(stderr, "Marinetti 3.0b3 or greater is required.\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
{
|
{
|
||||||
const char *url;
|
const char *url;
|
||||||
@ -189,7 +250,8 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ShutDown(mf, false, NULL);
|
ShutDownTCP(mf, false, NULL);
|
||||||
|
ShutDownTZ(tf);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
CFLAGS += $(DEFINES) -v -w
|
CFLAGS += $(DEFINES) -v -w
|
||||||
OBJS = main.o gopher.o url.o connection.o readline2.o scheme.o ftype.o setftype.o \
|
OBJS = main.o gopher.o url.o connection.o readline2.o scheme.o ftype.o setftype.o \
|
||||||
s16debug.o common.o http.o http.utils.o dictionary.o flags.o
|
s16debug.o common.o http.o http.utils.o dictionary.o flags.o \
|
||||||
|
time.o
|
||||||
|
|
||||||
gopher: $(OBJS)
|
gopher: $(OBJS)
|
||||||
$(CC) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $@
|
$(CC) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $@
|
||||||
@ -34,6 +35,8 @@ setftype.o: setftype.c
|
|||||||
scheme.o: scheme.c url.h
|
scheme.o: scheme.c url.h
|
||||||
ftype.o: ftype.c
|
ftype.o: ftype.c
|
||||||
|
|
||||||
|
time.o: time.c
|
||||||
|
|
||||||
s16debug.o: s16debug.c s16debug.h
|
s16debug.o: s16debug.c s16debug.h
|
||||||
|
|
||||||
# tests
|
# tests
|
||||||
|
@ -29,4 +29,10 @@ int do_gopher(const char *url, URLComponents *components);
|
|||||||
int do_http(const char *url, URLComponents *components);
|
int do_http(const char *url, URLComponents *components);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __TYPES__
|
||||||
|
void tiTimeRec2ISO8601(const TimeRecPtr t, char *str);
|
||||||
|
void tiTimeRec2GMTString(const TimeRecPtr t, char *str);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
132
time.c
Normal file
132
time.c
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
#pragma noroot
|
||||||
|
#pragma optimize -1
|
||||||
|
#pragma lint -1
|
||||||
|
#pragma debug 0x8000
|
||||||
|
|
||||||
|
#include <timetool.h>
|
||||||
|
#include <misctool.h>
|
||||||
|
#include <intmath.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* From Silver Platter.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
// yyyy-mm-ddThh:mm:ssZ
|
||||||
|
void tiTimeRec2ISO8601(const TimeRecPtr t, char *str)
|
||||||
|
{
|
||||||
|
LongWord secs;
|
||||||
|
tiPrefRec tiPrefs;
|
||||||
|
TimeRec tr;
|
||||||
|
|
||||||
|
|
||||||
|
tiPrefs.pCount = 3;
|
||||||
|
tiGetTimePrefs(&tiPrefs);
|
||||||
|
|
||||||
|
secs = ConvSeconds(TimeRec2Secs, 0, (Pointer)t);
|
||||||
|
secs += tiPrefs.secOffset;
|
||||||
|
|
||||||
|
ConvSeconds(secs2TimeRec, secs, (Pointer)&tr);
|
||||||
|
|
||||||
|
str[0] = 20;
|
||||||
|
|
||||||
|
// yyyy-
|
||||||
|
Int2Dec(tr.year + 1900, &str[1], 4, 0);
|
||||||
|
str[5] = '-';
|
||||||
|
|
||||||
|
// mm-
|
||||||
|
Int2Dec(tr.month + 1, &str[6], 2, 0);
|
||||||
|
str[6] |= 0x10; // convert ' ' -> '0'
|
||||||
|
str[8] = '-';
|
||||||
|
|
||||||
|
// ddT
|
||||||
|
Int2Dec(tr.day + 1, &str[9], 2, 0);
|
||||||
|
str[9] |= 0x10; // convert ' ' -> '0'
|
||||||
|
str[11] = 'T';
|
||||||
|
|
||||||
|
// hh:
|
||||||
|
Int2Dec(tr.hour, &str[12], 2, 0);
|
||||||
|
str[12] |= 0x10; // convert ' ' -> '0'
|
||||||
|
str[14] = ':';
|
||||||
|
|
||||||
|
// mm:
|
||||||
|
Int2Dec(tr.minute, &str[15], 2, 0);
|
||||||
|
str[15] |= 0x10; // convert ' ' -> '0'
|
||||||
|
str[17] = ':';
|
||||||
|
|
||||||
|
// ss:
|
||||||
|
Int2Dec(tr.second, &str[18], 2, 0);
|
||||||
|
str[18] |= 0x10; // convert ' ' -> '0'
|
||||||
|
str[20] = 'Z';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void tiTimeRec2GMTString(const TimeRecPtr t, char *str)
|
||||||
|
{
|
||||||
|
static const char weekday[] = "Sun,Mon,Tue,Wed,Thu,Fri,Sat,";
|
||||||
|
static const char month[] = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ";
|
||||||
|
|
||||||
|
int i;
|
||||||
|
LongWord secs;
|
||||||
|
|
||||||
|
tiPrefRec tiPrefs;
|
||||||
|
TimeRec tr;
|
||||||
|
|
||||||
|
tiPrefs.pCount = 3;
|
||||||
|
tiGetTimePrefs(&tiPrefs);
|
||||||
|
|
||||||
|
secs = ConvSeconds(TimeRec2Secs, 0, (Pointer)t);
|
||||||
|
|
||||||
|
secs += tiPrefs.secOffset;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
//add daylight savings time...
|
||||||
|
if (ReadBParam(0x5e) & 0x02 == 0) secs += 3600;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ConvSeconds(secs2TimeRec, secs, (Pointer)&tr);
|
||||||
|
|
||||||
|
str[0] = 29;
|
||||||
|
|
||||||
|
i = (tr.weekDay - 1) << 2;
|
||||||
|
|
||||||
|
// Day of week
|
||||||
|
str[1] = weekday[i++];
|
||||||
|
str[2] = weekday[i++];
|
||||||
|
str[3] = weekday[i++];
|
||||||
|
str[4] = weekday[i++];
|
||||||
|
str[5] = ' ';
|
||||||
|
|
||||||
|
// day
|
||||||
|
Int2Dec(tr.day + 1, &str[6], 2, 0);
|
||||||
|
str[6] |= 0x10;
|
||||||
|
|
||||||
|
str[8] = ' ';
|
||||||
|
|
||||||
|
i = tr.month << 2;
|
||||||
|
str[9] = month[i++];
|
||||||
|
str[10] = month[i++];
|
||||||
|
str[11] = month[i++];
|
||||||
|
str[12] = month[i++];
|
||||||
|
|
||||||
|
// year
|
||||||
|
Int2Dec(tr.year + 1900, &str[13], 4, 0);
|
||||||
|
str[17] = ' ';
|
||||||
|
|
||||||
|
Int2Dec(tr.hour, &str[18], 2, 0);
|
||||||
|
str[18] |= 0x10;
|
||||||
|
str[20] = ':';
|
||||||
|
|
||||||
|
Int2Dec(tr.minute, &str[21], 2, 0);
|
||||||
|
str[21] |= 0x10;
|
||||||
|
str[23] = ':';
|
||||||
|
|
||||||
|
Int2Dec(tr.second, &str[24], 2, 0);
|
||||||
|
str[24] |= 0x10;
|
||||||
|
|
||||||
|
str[26] = ' ';
|
||||||
|
str[27] = 'G';
|
||||||
|
str[28] = 'M';
|
||||||
|
str[29] = 'T';
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user