mirror of https://gitlab.com/rnger/amath
164 lines
5.9 KiB
C
164 lines
5.9 KiB
C
/*
|
|
* $Id$
|
|
*
|
|
* Copyright(C) 1993-1999 by Jochen Wiedmann and Marcin Orlowski
|
|
* Copyright (C) 2002-2015 FlexCat Open Source Team
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or(at
|
|
* your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*
|
|
*/
|
|
|
|
#include "flexcat.h"
|
|
|
|
int WarnCTGaps = FALSE; /* Warn for missing symbols in CT file. */
|
|
int NoOptim = FALSE; /* Put string into catalog even
|
|
if translation is equal to
|
|
description. */
|
|
int Fill = FALSE; /* If translation of given string
|
|
is missing or empty, write
|
|
string descriptor from #?.cd
|
|
file instead. */
|
|
int DoExpunge = FALSE; /* If TRUE, FlexCat will do an AVAIL
|
|
FLUSH-alike call after saving the catalog. */
|
|
int NoBeep = FALSE; /* If TRUE, FlexCat won't call
|
|
DisplayBeep() any longer. */
|
|
int Quiet = FALSE; /* Forces FlexCat to shut up. */
|
|
int LANGToLower = TRUE; /* Shall we do ToLower() on lang's name ?
|
|
Some #?.language drivers seem to be
|
|
broken, so we provide a workaround. */
|
|
int NoBufferedIO = FALSE; /* Shall we do buffered I/O ? */
|
|
int Modified = FALSE; /* Shall we write the catalog ONLY
|
|
if #?.catalog is newer than
|
|
#?.c(d|t) files ? */
|
|
char Msg_New[MAX_NEW_STR_LEN] = "***NEW***"; /* New strings in updated #?.ct */
|
|
int CopyNEWs = FALSE; /* Shall we write the Msg_New into new strings ? */
|
|
char Old_Msg_New[MAX_NEW_STR_LEN] = "; ***NEW***"; /* Old new string(above) used in old
|
|
CT file. Now we look if it's present
|
|
and copy it into new CT if the user
|
|
upgrades(flexcat CD CT newctfile CT */
|
|
char DestCodeset[MAX_NEW_STR_LEN] = ""; /* To which codeset should we convert to
|
|
If empty then this signals that FlexCat
|
|
should automatically find out which codeset
|
|
to be used */
|
|
|
|
|
|
char prefs_sddir[MAXPATHLEN] = "\0";
|
|
|
|
/// ReadPrefs
|
|
|
|
/* Fill in options from preferences file. */
|
|
|
|
char ReadPrefs(void)
|
|
{
|
|
char result = FALSE;
|
|
|
|
#ifdef AMIGA
|
|
|
|
#define MAX_PREFS_LEN 512
|
|
#define FLEXCAT_PREFS "flexcat.prefs"
|
|
|
|
enum
|
|
{
|
|
SDDIR,
|
|
MSG_NEW,
|
|
CODESET,
|
|
WARNCTGAPS,
|
|
NOOPTIM,
|
|
FILL,
|
|
FLUSH,
|
|
NOBEEP,
|
|
QUIET,
|
|
NOLANGTOLOWER,
|
|
NOBUFFEREDIO,
|
|
MODIFIED,
|
|
COPYMSGNEW,
|
|
OLDMSGNEW,
|
|
NOAUTODATE,
|
|
NOSPACES,
|
|
ARGS_COUNT
|
|
};
|
|
|
|
const char template[] = "SDDIR/K,MSG_NEW/K,CODESET/K,WARNCTGAPS/S,NOOPTIM/S,FILL/S,FLUSH/S,NOBEEP/S,QUIET/S,NOLANGTOLOWER/S,NOBUFFEREDIO/S,MODIFIED/S,COPYMSGNEW/S,OLDMSGNEW/K,NOAUTODATE/S,NOSPACES/S";
|
|
LONG Results[ARGS_COUNT] = { 0 };
|
|
char *prefs;
|
|
struct RDArgs *rda;
|
|
struct RDArgs *rdargs;
|
|
|
|
if((prefs = malloc(2048)) != NULL)
|
|
{
|
|
if(GetVar(FLEXCAT_PREFS, prefs, 80, 0) != -1)
|
|
{
|
|
prefs = realloc(prefs, strlen(prefs) + 1);
|
|
strcat(prefs, "\n");
|
|
|
|
if((rda = AllocDosObject(DOS_RDARGS, TAG_DONE)) != NULL)
|
|
{
|
|
rda->RDA_Source.CS_Buffer = prefs;
|
|
rda->RDA_Source.CS_Length = strlen(prefs);
|
|
rda->RDA_Source.CS_CurChr = 0;
|
|
rda->RDA_Flags |= RDAF_NOPROMPT;
|
|
|
|
if((rdargs = ReadArgs(template, Results, rda)) != NULL)
|
|
{
|
|
if(Results[SDDIR])
|
|
strlcpy(prefs_sddir, (char *)Results[SDDIR], MAXPATHLEN);
|
|
|
|
if(Results[MSG_NEW])
|
|
strlcpy(Msg_New, (char *)Results[MSG_NEW], MAX_NEW_STR_LEN);
|
|
|
|
if(Results[CODESET])
|
|
strlcpy(DestCodeset, (char *)Results[CODESET], MAX_NEW_STR_LEN);
|
|
|
|
WarnCTGaps = Results[WARNCTGAPS];
|
|
NoOptim = Results[NOOPTIM];
|
|
Fill = Results[FILL];
|
|
DoExpunge = Results[FLUSH];
|
|
NoBeep = Results[NOBEEP];
|
|
Quiet = Results[QUIET];
|
|
LANGToLower = !Results[NOLANGTOLOWER];
|
|
Modified = Results[MODIFIED];
|
|
NoBufferedIO = Results[NOBUFFEREDIO];
|
|
CopyNEWs = Results[COPYMSGNEW];
|
|
if(Results[OLDMSGNEW])
|
|
snprintf(Old_Msg_New, sizeof(Old_Msg_New), "; %s", (char *)Results[OLDMSGNEW]);
|
|
|
|
FreeArgs(rdargs);
|
|
|
|
result = TRUE;
|
|
}
|
|
else
|
|
{
|
|
fputs(MSG_ERR_BADPREFS, stderr);
|
|
fputs(template, stderr);
|
|
fputs("\n", stderr);
|
|
DisplayBeep(NULL);
|
|
}
|
|
FreeDosObject(DOS_RDARGS, rda);
|
|
}
|
|
else
|
|
{
|
|
fputs("Error processing prefs.\n" \
|
|
"Can't AllocDosObject()\n", stderr);
|
|
}
|
|
free(prefs);
|
|
}
|
|
}
|
|
#endif
|
|
|
|
return(result);
|
|
}
|
|
|
|
///
|