Compare commits
3 Commits
d98b26c4b4
...
37e05b8508
Author | SHA1 | Date |
---|---|---|
Bobbi Webber-Manners | 37e05b8508 | |
Bobbi Webber-Manners | a6190dd720 | |
Bobbi Webber-Manners | ee7e383e83 |
56
sortdir.c
56
sortdir.c
|
@ -310,10 +310,10 @@ void err(enum errtype severity, const char *fmt, ...);
|
|||
void flushall(void);
|
||||
int readdiskblock(uchar device, uint blocknum, char *buf);
|
||||
int writediskblock(uchar device, uint blocknum, char *buf);
|
||||
void fixcase(char *in, char *out, uchar minvers, uchar vers, uchar len);
|
||||
void lowercase(char *p, uchar len, uchar *minvers, uchar *vers);
|
||||
void uppercase(char *p, uchar len, uchar *minvers, uchar *vers);
|
||||
void initialcase(uchar mode, char *p, uchar len, uchar *minvers, uchar *vers);
|
||||
void fixcase(char *in, char *out, uchar vers, uchar minvers, uchar len);
|
||||
void lowercase(char *p, uchar len, uchar *vers, uchar *minvers);
|
||||
void uppercase(char *p, uchar len, uchar *vers, uchar *minvers);
|
||||
void initialcase(uchar mode, char *p, uchar len, uchar *vers, uchar *minvers);
|
||||
void firstblk(char *dirname, uchar *device, uint *block);
|
||||
void readdatetime(uchar time[4], struct datetime *dt);
|
||||
void writedatetime(struct datetime *dt, uchar time[4]);
|
||||
|
@ -570,26 +570,26 @@ int writediskblock(uchar device, uint blocknum, char *buf) {
|
|||
* as a bitmap representing which characters are upper and which are
|
||||
* lowercase
|
||||
*/
|
||||
void fixcase(char *in, char *out, uchar minvers, uchar vers, uchar len) {
|
||||
void fixcase(char *in, char *out, uchar vers, uchar minvers, uchar len) {
|
||||
uint i;
|
||||
uchar idx = 0;
|
||||
if (!(vers & 0x80)) {
|
||||
if (!(minvers & 0x80)) {
|
||||
for (idx = 0; idx < NMLEN; ++idx)
|
||||
out[idx] = in[idx];
|
||||
out[len] = '\0';
|
||||
return;
|
||||
}
|
||||
vers <<= 1;
|
||||
minvers <<= 1;
|
||||
for (i = 0; i < 7; ++i) {
|
||||
out[idx] = ((vers & 0x80) ? tolower(in[idx]) : in[idx]);
|
||||
++idx;
|
||||
vers <<= 1;
|
||||
}
|
||||
for (i = 0; i < 8; ++i) {
|
||||
out[idx] = ((minvers & 0x80) ? tolower(in[idx]) : in[idx]);
|
||||
++idx;
|
||||
minvers <<= 1;
|
||||
}
|
||||
for (i = 0; i < 8; ++i) {
|
||||
out[idx] = ((vers & 0x80) ? tolower(in[idx]) : in[idx]);
|
||||
++idx;
|
||||
vers <<= 1;
|
||||
}
|
||||
out[len] = '\0';
|
||||
}
|
||||
|
||||
|
@ -597,28 +597,28 @@ void fixcase(char *in, char *out, uchar minvers, uchar vers, uchar len) {
|
|||
* Convert filename pointed to by p into lower case (which is recorded
|
||||
* as a bitmap in the vers and minvers fields.
|
||||
*/
|
||||
void lowercase(char *p, uchar len, uchar *minvers, uchar *vers) {
|
||||
void lowercase(char *p, uchar len, uchar *vers, uchar *minvers) {
|
||||
uint i;
|
||||
uchar idx = 0;
|
||||
*vers = 0x01;
|
||||
*minvers = 0x00;
|
||||
*vers = 0x00;
|
||||
*minvers = 0x01;
|
||||
for (i = 0; i < 7; ++i) {
|
||||
*vers <<= 1;
|
||||
if ((idx < len) && isalpha(p[idx++]))
|
||||
*vers |= 0x01;
|
||||
}
|
||||
for (i = 0; i < 8; ++i) {
|
||||
*minvers <<= 1;
|
||||
if ((idx < len) && isalpha(p[idx++]))
|
||||
*minvers |= 0x01;
|
||||
}
|
||||
for (i = 0; i < 8; ++i) {
|
||||
*vers <<= 1;
|
||||
if ((idx < len) && isalpha(p[idx++]))
|
||||
*vers |= 0x01;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert filename pointed to by p into upper case (which is recorded
|
||||
* as a bitmap in the vers and minvers fields.
|
||||
*/
|
||||
void uppercase(char*, uchar, uchar *minvers, uchar *vers) {
|
||||
void uppercase(char*, uchar, uchar *vers, uchar *minvers) {
|
||||
*vers = 0x00;
|
||||
*minvers = 0x00;
|
||||
}
|
||||
|
@ -629,27 +629,27 @@ void uppercase(char*, uchar, uchar *minvers, uchar *vers) {
|
|||
* If mode = 0 then just uppercase the initial char ("Read.me")
|
||||
* otherwise camel-case the name ("Read.Me")
|
||||
*/
|
||||
void initialcase(uchar mode, char *p, uchar len, uchar *minvers, uchar *vers) {
|
||||
void initialcase(uchar mode, char *p, uchar len, uchar *vers, uchar *minvers) {
|
||||
uint i;
|
||||
uchar idx = 0;
|
||||
uchar capsflag = 1;
|
||||
*vers = 0x01;
|
||||
*minvers = 0x00;
|
||||
*vers = 0x00;
|
||||
*minvers = 0x01;
|
||||
for (i = 0; i < 7; ++i) {
|
||||
*vers <<= 1;
|
||||
*minvers <<= 1;
|
||||
if ((idx < len) && isalpha(p[idx++]))
|
||||
if (!capsflag)
|
||||
*vers |= 0x01;
|
||||
*minvers |= 0x01;
|
||||
if ((mode == 1) && !isalpha(p[idx-1]))
|
||||
capsflag = 1;
|
||||
else
|
||||
capsflag = 0;
|
||||
}
|
||||
for (i = 0; i < 8; ++i) {
|
||||
*minvers <<= 1;
|
||||
*vers <<= 1;
|
||||
if ((idx < len) && isalpha(p[idx++]))
|
||||
if (!capsflag)
|
||||
*minvers |= 0x01;
|
||||
*vers |= 0x01;
|
||||
if ((mode == 1) && !isalpha(p[idx-1]))
|
||||
capsflag = 1;
|
||||
else
|
||||
|
|
BIN
sortdir.po
BIN
sortdir.po
Binary file not shown.
34
veserver.py
34
veserver.py
|
@ -82,13 +82,13 @@ def appendbyte(l, b, csin):
|
|||
#
|
||||
# Pretty print info about each request
|
||||
#
|
||||
def printinfo(drv, blknum, isWrite, isError, cs):
|
||||
def printinfo(drv, blknum, isWrite, isError, cs, filename):
|
||||
global systemd, prevblk, prevdrv, prevop, prevcs, col
|
||||
if drv != prevdrv:
|
||||
if systemd:
|
||||
print('\nDrive {}'.format(drv))
|
||||
print('\nDrive {} ({})'.format(drv, filename))
|
||||
else:
|
||||
print('\n{}Drive {}{}'.format(BLU, drv, ENDC))
|
||||
print('\n{}Drive {} ({}){}'.format(BLU, drv, filename, ENDC))
|
||||
col = 0
|
||||
e = '+' if ((blknum == prevblk) and (drv == prevdrv) and (isWrite == prevop) and (cs == prevcs)) else ' '
|
||||
e = 'X' if isError else e
|
||||
|
@ -127,7 +127,7 @@ def select_filename(filename, ip):
|
|||
return filename
|
||||
filename_with_ip = augment_filename(filename, ip)
|
||||
try:
|
||||
with open(filename_with_ip, "rb"):
|
||||
with open(filename_with_ip, 'r+b'):
|
||||
pass
|
||||
except:
|
||||
return filename
|
||||
|
@ -142,21 +142,21 @@ def read3(dataport, addr, ip, d):
|
|||
d = dataport.recvmore(d, 3)
|
||||
|
||||
if d[1] == 0x03:
|
||||
file = file1
|
||||
filename = file1
|
||||
drv = 1
|
||||
skip = skip1
|
||||
else:
|
||||
file = file2
|
||||
filename = file2
|
||||
drv = 2
|
||||
skip = skip2
|
||||
|
||||
file = select_filename(file, ip)
|
||||
filename = select_filename(filename, ip)
|
||||
|
||||
blknum = d[2] + 256 * d[3]
|
||||
|
||||
err = False
|
||||
try:
|
||||
with open(file, 'rb') as f:
|
||||
with open(filename, 'r+b') as f:
|
||||
b = blknum * BLKSZ + skip
|
||||
f.seek(b)
|
||||
block = f.read(BLKSZ)
|
||||
|
@ -189,7 +189,7 @@ def read3(dataport, addr, ip, d):
|
|||
|
||||
appendbyte(l, cs, cs) # Checksum for datablock
|
||||
|
||||
printinfo(drv, blknum, False, err, cs)
|
||||
printinfo(drv, blknum, False, err, cs, filename)
|
||||
|
||||
b = dataport.sendto(bytearray(l), addr)
|
||||
#print('Sent {} bytes to {}'.format(b, ip))
|
||||
|
@ -203,15 +203,15 @@ def write(dataport, addr, ip, d):
|
|||
d = dataport.recvmore(d, BLKSZ + 4)
|
||||
|
||||
if d[1] == 0x02:
|
||||
file = file1
|
||||
filename = file1
|
||||
drv = 1
|
||||
skip = skip1
|
||||
else:
|
||||
file = file2
|
||||
filename = file2
|
||||
drv = 2
|
||||
skip = skip2
|
||||
|
||||
file = select_filename(file, ip)
|
||||
filename = select_filename(filename, ip)
|
||||
|
||||
cs = 0
|
||||
for i in range (0, BLKSZ):
|
||||
|
@ -222,7 +222,7 @@ def write(dataport, addr, ip, d):
|
|||
err = False
|
||||
if cs == d[517]:
|
||||
try:
|
||||
with open(file, 'rb') as f:
|
||||
with open(filename, 'r+b') as f:
|
||||
b = blknum * BLKSZ + skip
|
||||
f.seek(b)
|
||||
for i in range (0, BLKSZ):
|
||||
|
@ -247,7 +247,7 @@ def write(dataport, addr, ip, d):
|
|||
appendbyte(l, d[3], 0) # Block num MSB
|
||||
appendbyte(l, cs, 0) # Checksum of datablock
|
||||
|
||||
printinfo(drv, blknum, True, err, cs)
|
||||
printinfo(drv, blknum, True, err, cs, filename)
|
||||
|
||||
b = dataport.sendto(bytearray(l), addr)
|
||||
#print('Sent {} bytes to {}'.format(b, ip))
|
||||
|
@ -258,7 +258,7 @@ def write(dataport, addr, ip, d):
|
|||
#
|
||||
def check2MG(filename):
|
||||
try:
|
||||
with open(filename, 'rb') as f:
|
||||
with open(filename, 'r+b') as f:
|
||||
hdr = f.read(16)
|
||||
except:
|
||||
return 0
|
||||
|
@ -362,7 +362,7 @@ for a, v in args:
|
|||
elif a in ('-b', '--baud'):
|
||||
baud_rate = int(v)
|
||||
|
||||
print("VEServer v1.2")
|
||||
print("VEServer v1.3")
|
||||
if pd25:
|
||||
print("ProDOS 2.5+ Clock Driver")
|
||||
else:
|
||||
|
@ -387,3 +387,5 @@ with DataPort(serial_port, baud_rate) as dataport:
|
|||
write(dataport, address, ip, data)
|
||||
except DataPort.Timeout:
|
||||
pass
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue