home *** CD-ROM | disk | FTP | other *** search
- /*
- * File I/O for ToolAlias.
- * Reads (and writes?) configuration files.
- *
- * mws, 4 February 1993
- */
-
- /*
- * structure of .config file (assg. line 0 is first line):
- *
- * line 2n: oldtool
- * line 2n+1: newtool
- *
- * with no leading spaces. MUST be valid format!!!
- * (Will be machine-generated in some future version).
- */
-
- #include <dos/dos.h>
- #include <proto/dos.h>
- #include "list.h"
-
- #ifdef TEST
- #define Msg(s) printf("error: %s\n", s)
- #else
- extern void EasyEasyRequest(char *);
- #define Msg(s) EasyEasyRequest(s);
- #endif
-
- /* write a string to a file (in binary format) */
- /* '\n' is appended */
- void
- FWriteString(BPTR fh, char *buf)
- {
- FPuts(fh, buf);
- FPutC(fh, '\n');
- }
-
- /* read a string to a file (in binary format) - returns success */
- /* '\n' is stripped and buf null-terminated; assumes dest large enough */
- BOOL
- FReadString(BPTR fh, char *buf, LONG bufsiz)
- {
- UWORD len;
-
- if (FGets(fh, buf, bufsiz))
- {
- len = strlen(buf);
- if (buf[len-1] = '\n')
- buf[len-1] = '\0'; /* '\n' --> '\0' */
- return TRUE;
- }
- return FALSE;
- }
-
- BOOL
- get_config(char *name)
- {
- static BOOL firsttime = TRUE;
- char oldname[256], newname[256];
- BPTR fh;
- TOOL *tool;
- BOOL rc = TRUE;
-
- if (fh = Open(name, MODE_OLDFILE))
- {
- free_list(); /* clear old list */
- tool = get_head();
-
- while (FReadString(fh, oldname, 256))
- {
- if (FReadString(fh, newname, 256))
- {
- if (!((tool = add_tool(tool)) &&
- set_oldname(tool, oldname) &&
- set_newname(tool, newname)))
- {
- if (tool) rem_tool(tool);
- Msg("Memory allocation failed");
- rc = FALSE;
- break;
- }
- }
- else /* invalid file format */
- {
- Msg("Invalid config file");
- rc = FALSE;
- break;
- }
- }
- Close(fh);
- }
- else if (firsttime) /* failed first time - no worries */
- firsttime = FALSE;
- else /* failed on reload - warn user */
- Msg("Couldn't open config file");
-
- if (!rc) free_list();
- return rc;
- }
-
- /* save current config to named file */
- BOOL
- write_config(char *name)
- {
- TOOL *tool;
- BPTR fh;
-
- if (fh = Open(name, MODE_NEWFILE))
- {
- tool = get_head();
- while (tool)
- {
- FWriteString(fh, tool->oldname);
- FWriteString(fh, tool->newname);
- tool = tool->next;
- }
- Close(fh);
- return TRUE;
- }
- Msg("Couldn't open config file");
- return FALSE;
- }
-
-
- /******************************************************************************/
-
- #ifdef TEST
- #include <stdio.h>
-
- void
- main(int argc, char **argv)
- {
- if (get_config("test.config"))
- {
- TOOL *tool = get_head();
- while (tool)
- {
- printf("%s -> %s\n", tool->oldname, tool->newname);
- tool = tool->next;
- }
- free_list();
- }
- else Msg("Couldn't get test.config");
-
- } /* main */
-
- #endif TEST