HuntnGather

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 42  →  ?path2? @ 43
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/HuntnGather/C/Gather
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/HuntnGather/C/Hunt
/trunk/HuntnGather/Gather/Gather.c
@@ -1151,7 +1151,7 @@
FilterDatabasePaths(dbFile, tmpName, paths);
 
// Overwrite the database file with the filtered paths.
CopyFile(tmpName, dbFile);
CopyLines(tmpName, dbFile);
 
// Remove temporary file.
if(RemoveFile(tmpName) == FALSE) {
/trunk/HuntnGather/Gather/StringStack.c
@@ -31,8 +31,11 @@
stringStack* stringStackCreate(unsigned int size) {
stringStack *s;
s = malloc(sizeof(*s));
if ((s->store = malloc(size * sizeof(*s->store))) == NULL)
if ((s->store = malloc(size * sizeof(*s->store))) == NULL) {
free(s);
s = NULL;
return NULL;
}
s->size = size;
s->top = 0;
return s;
@@ -42,8 +45,10 @@
* Clears a stringStack and returns a pointer to a new empty stack.
*/
stringStack* stringStackClear(stringStack *s) {
if (s != NULL)
if (s != NULL) {
free(s);
s = NULL;
}
return stringStackCreate(1);
}
 
@@ -70,6 +75,7 @@
e = malloc((strlen(s->store[s->top]) + 1) * sizeof(*e));
strncpy(e, s->store[s->top], strlen(s->store[s->top]) + 1);
free(s->store[s->top]);
s->store[s->top] = NULL;
return e;
}
 
@@ -81,8 +87,10 @@
while(!stringStackIsEmpty(s)) {
e = stringStackPop(s);
free(e);
e = NULL;
}
free(s);
s = NULL;
}
 
/*
/trunk/HuntnGather/Hunt/Hunt.c
@@ -86,6 +86,7 @@
free(line->string);
free(line);
line = NULL;
 
#if defined ___AsyncIO___
CloseAsync(fp);
#else
/trunk/HuntnGather/shared/utilities.c
@@ -64,7 +64,11 @@
*
* Converts a string to case.
*/
#if defined ___AmigaOS___
void StrUpr(UBYTE *s) {
#else
void StrUpr(char *s) {
#endif
while(*s != '\0') {
#if defined ___AmigaOS___
*s = ToUpper(*s);
@@ -509,9 +513,9 @@
}
 
/*
*
* Delete a file.
*/
*
* Delete a file.
*/
#if defined ___AmigaOS___
BOOL RemoveFile(char *name) {
return DeleteFile(name);
@@ -540,16 +544,15 @@
*
* Copies a file to another file by name.
*/
void CopyFile(char *a, char *b) {
void CopyLines(char *a, char *b) {
#if defined ___AsyncIO___
struct AsyncFile *ap;
struct AsyncFile *bp;
LONG c;
#else
FILE *ap;
FILE *bp;
char c;
#endif
dbLine *line = NULL;
 
// Open database file for writing.
#if defined ___AsyncIO___
@@ -579,11 +582,7 @@
return;
}
 
#if defined ___AsyncIO___
while(PROGRAM_RUN && (c = ReadCharAsync(ap)) != -1) {
#else
while(PROGRAM_RUN && fscanf(ap, "%c", &c) == 1) {
#endif
while(PROGRAM_RUN && (line = ReadLine(ap)) != NULL) {
#if defined ___AmigaOS___
// Check if CTRL+C was pressed and abort the program.
if(SetSignal(0L, SIGBREAKF_CTRL_C) & SIGBREAKF_CTRL_C) {
@@ -591,16 +590,25 @@
continue;
}
#endif
 
#if defined ___AsyncIO___
if(WriteCharAsync(bp, (UBYTE)c) != 1) {
WriteAsync(bp, line->string, line->length);
WriteAsync(bp, "\n", 1);
#else
if(fprintf(bp, "%c", c) != 1) {
fprintf(bp, "%s\n", line->string);
#endif
fprintf(stderr, "Could not write to file '%s'.\n", b);
break;
}
 
free(line->string);
free(line);
line = NULL;
}
 
if(line != NULL) {
free(line->string);
free(line);
line = NULL;
}
 
#if defined ___AsyncIO___
CloseAsync(ap);
CloseAsync(bp);
@@ -680,23 +688,30 @@
ULONG size;
BOOL success;
UBYTE *pattern;
char *e = a;
char *n = b;
 
#if defined ___NOCASE_FS___
StrUpr(e);
StrUpr(n);
#endif
 
// "must be at least 2 times as large plus 2 bytes"
size = strlen(b) * 2 + 2;
size = strlen(n) * 2 + 2;
 
success = FALSE;
 
if(pattern = AllocVec(size, MEMF_ANY|MEMF_CLEAR)) {
switch(ParsePatternNoCase(b, pattern, (LONG)size)) {
switch(ParsePatternNoCase(n, pattern, (LONG)size)) {
case 1: // the pattern contains wildcards
success = MatchPatternNoCase(pattern, a);
success = MatchPatternNoCase(pattern, e);
 
break;
case 0: // no wildcards so fall back to exact name match
#if defined ___NOCASE_FS___
success = (Strnicmp(a, b, StringLenMax(a, b)) == 0);
success = (Strnicmp(e, n, StringLenMax(e, n)) == 0);
#else
success = (StrnCmp(a, b, StringLenMax(a, b)) == 0);
success = (StrnCmp(e, n, StringLenMax(e, n)) == 0);
#endif
 
break;
/trunk/HuntnGather/shared/utilities.h
@@ -10,7 +10,8 @@
#define FALSE 0;
#endif
 
#define ASYNC_BUF 8192
/* 32768b empirically shows a doubling of speed compared to lower values */
#define ASYNC_BUF 32768
#define MAX_MEM 262144
#define LINE_BUF 256
#define DEFAULT_DATABASE_FILE "S:gather.db"
@@ -58,11 +59,13 @@
extern BOOL PathCompare(char *path, char *look);
extern BOOL RemoveFile(char *name);
extern BOOL StringMatch(char *a, char *b);
extern void StrUpr(UBYTE *s);
#else
extern int StrlenMax(char *a, char *b);
extern int PathCompare(char *path, char *look);
extern int RemoveFile(char *name);
extern int StringMatch(char *a, char *b);
extern void StrUpr(char *s);
#endif
 
#if defined ___AsyncIO___
@@ -75,7 +78,6 @@
extern dbLine *ReadLine(FILE *fp);
#endif
 
extern void StrUpr(char *);
extern FS_TYPE GetFsType(char *path);
extern int CountFileLines(char *dbFile);
extern int GetFileSize(char *dbFile);
@@ -83,6 +85,6 @@
extern char *CreateTemporaryFile(void);
extern VECTOR *CreateTemporaryFiles(int files);
extern void RemoveFiles(VECTOR *names);
extern void CopyFile(char *a, char *b);
extern void CopyLines(char *a, char *b);
 
extern dbEntry* CreateDatabaseEntry(dbLine *line);