nulleric
/Fix-a-Fork
/amendments
/16
Add ability to look at file extensions if all else fails.
eric made amendment 16 about 1 year ago
--- main.c Thu Nov 9 09:46:55 2023
+++ main.c Thu Nov 9 10:27:03 2023
@@ -1,4 +1,5 @@
#include "main.h"
+#include <Script.h>
pascal OSErr DoOpenDoc(AppleEvent *event, AppleEvent *reply, long handlerRefcon)
{
@@ -77,7 +78,8 @@ OSErr openFile(unsigned char *fName, short fRefNum, sh
long count = BUF_SIZE;
FInfo fi = {0};
Boolean found = false;
-
+ char ext[4] = {0};
+
err = FSOpen(fName, vRefNum, &fRefNum);
if(err) return err;
@@ -110,6 +112,21 @@ OSErr openFile(unsigned char *fName, short fRefNum, sh
if(isDsk_1024())
found = true;
}
+
+ if(!found)
+ {
+ // Parse file extension
+ ext[2] = fName[fName[0] - 0];
+ ext[1] = fName[fName[0] - 1];
+ ext[0] = fName[fName[0] - 2];
+ LowerText(ext, 3);
+ if(strcmp(ext, "bin"))
+ {
+ gType = 'BINA';
+ gCreator = 'SITx';
+ found = true;
+ }
+ }
if(found)
{
@@ -221,6 +238,18 @@ short strlen(const char *str)
const char *s;
for (s = str; *s; ++s);
return (s-str);
+}
+
+Boolean strcmp(const char *lhs, const char *rhs)
+{
+ short i = 0;
+ short len = strlen(lhs);
+ if(len != strlen(rhs)) return false;
+
+ for(i = 0; i < len; i++)
+ if(lhs[i] != rhs[i])
+ return false;
+ return true;
}
Boolean magicCheck(char *magic, short offset, OSType type, OSType creator)
--- main.h Thu Nov 9 09:47:04 2023
+++ main.h Thu Nov 9 10:15:33 2023
@@ -18,6 +18,7 @@ OSErr openFile(unsigned char *fName, short fRefNum, sh
pascal OSErr DoOpenDoc(AppleEvent *event, AppleEvent *reply, long handlerRefcon);
// checks
+Boolean strcmp(const char *lhs, const char *rhs);
Boolean magicCheck(char *magic, short offset, OSType type, OSType creator);
Boolean isBinHex4();
Boolean isSit5();