|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* config.c Read and write the configuration file(s).
|
|
Packit |
15a96c |
*
|
|
Packit |
15a96c |
* This file is part of the minicom communications package,
|
|
Packit |
15a96c |
* Copyright 1991-1995 Miquel van Smoorenburg.
|
|
Packit |
15a96c |
*
|
|
Packit |
15a96c |
* This program is free software; you can redistribute it and/or
|
|
Packit |
15a96c |
* modify it under the terms of the GNU General Public License
|
|
Packit |
15a96c |
* as published by the Free Software Foundation; either version
|
|
Packit |
15a96c |
* 2 of the License, or (at your option) any later version.
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
* You should have received a copy of the GNU General Public License along
|
|
Packit |
15a96c |
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
Packit |
15a96c |
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
Packit |
15a96c |
*
|
|
Packit |
15a96c |
* // fmg 12/20/93 - Added color selection to Screen & Keyboard menu
|
|
Packit |
15a96c |
* // fmg 2/15/94 - Added macro filename & Macro define selection to
|
|
Packit |
15a96c |
* Screen & Keyboard menu. Added window for macro
|
|
Packit |
15a96c |
* definition.
|
|
Packit |
15a96c |
* // jl 04.09.97 - Added configuring the character conversion tables
|
|
Packit |
15a96c |
* // jl 09.09.97 - Save conversion table filename in the config file and
|
|
Packit |
15a96c |
* read the table at startup
|
|
Packit |
15a96c |
* // jl 22.02.98 - Setting for filename selection window
|
|
Packit |
15a96c |
* // acme 25.02.98 - i18n
|
|
Packit |
15a96c |
* // jl 05.04.98 - Handling the P_MUL option
|
|
Packit |
15a96c |
* jl 06.07.98 - the P_CONVCAP option
|
|
Packit |
15a96c |
* jl 10.07.98 - moved functions pfix_home and do_log to file common.c
|
|
Packit |
15a96c |
* jl 29.11.98 - the P_SHOWSPD option
|
|
Packit |
15a96c |
* jl 05.04.99 - logging options menu
|
|
Packit |
15a96c |
* er 18-Apr-99 - the P_MULTILINE option
|
|
Packit |
15a96c |
* jl 11.02.2000 - the P_STOPB option
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
#ifdef HAVE_CONFIG_H
|
|
Packit |
15a96c |
#include <config.h>
|
|
Packit |
15a96c |
#endif
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
#include <limits.h>
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
#include "port.h"
|
|
Packit |
15a96c |
#include "minicom.h"
|
|
Packit |
15a96c |
#include "intl.h"
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
void doconv(void); /* jl 04.09.97 */
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* Read in parameters. */
|
|
Packit |
15a96c |
void read_parms(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
FILE *fp;
|
|
Packit |
15a96c |
int f;
|
|
Packit |
15a96c |
char buf[64];
|
|
Packit |
15a96c |
char *p;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* Read global parameters */
|
|
Packit |
15a96c |
if ((fp = fopen(parfile, "r"))) {
|
|
Packit |
15a96c |
readpars(fp, CONFIG_GLOBAL);
|
|
Packit |
15a96c |
fclose(fp);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* Read personal parameters */
|
|
Packit |
15a96c |
if ((fp = fopen(pparfile, "r")) != NULL) {
|
|
Packit |
15a96c |
readpars(fp, CONFIG_PERSONAL);
|
|
Packit |
15a96c |
fclose(fp);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* fmg - set colors from readin values (Jcolor Xlates name to #) */
|
|
Packit |
15a96c |
mfcolor = Jcolor(P_MFG); mbcolor = Jcolor(P_MBG);
|
|
Packit |
15a96c |
tfcolor = Jcolor(P_TFG); tbcolor = Jcolor(P_TBG);
|
|
Packit |
15a96c |
sfcolor = Jcolor(P_SFG); sbcolor = Jcolor(P_SBG);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* fmg - Read personal macros */
|
|
Packit |
15a96c |
if (P_MACROS[0] != 0) { /* fmg - null length? */
|
|
Packit |
15a96c |
if ((fp = fopen(pfix_home(P_MACROS), "r")) == NULL) {
|
|
Packit |
15a96c |
if (errno != ENOENT) {
|
|
Packit |
15a96c |
fprintf(stderr,
|
|
Packit |
15a96c |
_("minicom: cannot open macro file %s\n"), pfix_home(P_MACROS));
|
|
Packit |
15a96c |
sleep(1); /* fmg - give the "slow" ones time to read :-) */
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
} else {
|
|
Packit |
15a96c |
readmacs(fp, 0);
|
|
Packit |
15a96c |
fclose(fp);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
} /* fmg - but it's perfectly OK if macros file name is NULL... */
|
|
Packit |
15a96c |
if (P_CONVF[0] != 0) { /* jl 09.09.97 */
|
|
Packit |
15a96c |
loadconv(P_CONVF);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* This code is to use old configuration files. */
|
|
Packit |
15a96c |
for (f = PROTO_BASE; f < MAXPROTO; f++) {
|
|
Packit |
15a96c |
if (P_PNAME(f)[0] && P_PIORED(f) != 'Y' && P_PIORED(f) != 'N') {
|
|
Packit |
15a96c |
strncpy(buf, P_PNAME(f) - 2, sizeof(buf));
|
|
rpm-build |
c8e99c |
buf[sizeof(buf) - 1] = '\0';
|
|
Packit |
15a96c |
strcpy(P_PNAME(f), buf);
|
|
Packit |
15a96c |
P_PIORED(f) = 'Y';
|
|
Packit |
15a96c |
P_PFULL(f) = 'N';
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
if ((p = strrchr(P_LOCK, '/')) != NULL && strncmp(p, "/LCK", 4) == 0)
|
|
Packit |
15a96c |
*p = 0;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* fmg - Convert color word to number
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
int Jcolor(char *s)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
char c1, c3;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
c1 = toupper(s[0]); /* fmg - it's already up but why tempt it? */
|
|
Packit |
15a96c |
c3 = toupper(s[2]);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
switch (c1)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
case 'G': return GREEN;
|
|
Packit |
15a96c |
case 'Y': return YELLOW;
|
|
Packit |
15a96c |
case 'W': return WHITE;
|
|
Packit |
15a96c |
case 'R': return RED;
|
|
Packit |
15a96c |
case 'M': return MAGENTA;
|
|
Packit |
15a96c |
case 'C': return CYAN;
|
|
Packit |
15a96c |
case 'B': if (c3 == 'A')
|
|
Packit |
15a96c |
return BLACK;
|
|
Packit |
15a96c |
if (c3 == 'U')
|
|
Packit |
15a96c |
return BLUE;
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
return -1; /* fmg - should never get here */
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* See if we have write access to a file.
|
|
Packit |
15a96c |
* If it is not there, see if the directory is writable.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
int waccess(char *s)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
char *p;
|
|
Packit |
15a96c |
char buf[128];
|
|
Packit |
15a96c |
struct stat stt;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* We use stat instead of access(s, F_OK) because I couldn't get
|
|
Packit |
15a96c |
* that to work under BSD 4.3 ...
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
if (stat(s, &stt) == 0) {
|
|
Packit |
15a96c |
if (access(s, W_OK) == 0)
|
|
Packit |
15a96c |
return(XA_OK_EXIST);
|
|
Packit |
15a96c |
return -1;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
strncpy(buf, s, sizeof(buf)-1);
|
|
Packit |
15a96c |
buf[sizeof(buf)-1] = 0;
|
|
Packit |
15a96c |
if ((p = strrchr(buf, '/')) == (char *)NULL)
|
|
Packit |
15a96c |
strcpy(buf, ".");
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
*p = '\0';
|
|
Packit |
15a96c |
if (access(buf, W_OK) == 0)
|
|
Packit |
15a96c |
return XA_OK_NOTEXIST;
|
|
Packit |
15a96c |
return -1;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* fmg - Read in a macro, but first check to see if it's
|
|
Packit |
15a96c |
* allowed to do so.
|
|
Packit |
15a96c |
*
|
|
Packit |
15a96c |
* TODO: have System macros and user macros (in theory it's already there
|
|
Packit |
15a96c |
* since user can specify their own macros file (unless root makes it
|
|
Packit |
15a96c |
* private... that's silly) ... anyways, you know what I mean...)
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
static void mgets(WIN *w, int x, int y, char *s, int len, int maxl)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
struct macs *m = (struct macs *)s;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wlocate(w, x, y);
|
|
Packit |
15a96c |
mc_wgets(w, s, len, maxl);
|
|
Packit |
15a96c |
m->flags |= CHANGED;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Read in a string, but first check to see if it's
|
|
Packit |
15a96c |
* allowed to do so.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
static void pgets(WIN *w, int x, int y, char *s, int len, unsigned int maxl,
|
|
Packit |
15a96c |
int extend_tilde)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
struct pars *p = (struct pars *)s;
|
|
Packit |
15a96c |
char *home = NULL;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wlocate(w, x, y);
|
|
Packit |
15a96c |
mc_wgets(w, s, len, maxl);
|
|
Packit |
15a96c |
if (extend_tilde &&
|
|
Packit |
15a96c |
s[0] == '~' && (s[1] == '/' || s[1] == 0) &&
|
|
Packit |
15a96c |
(home = getenv("HOME")) && strlen(s) + strlen(home) <= maxl) {
|
|
Packit |
15a96c |
int i = 0;
|
|
Packit |
15a96c |
memmove(s + strlen(home), s + 1, strlen(s));
|
|
Packit |
15a96c |
memcpy(s, home, strlen(home));
|
|
Packit |
15a96c |
mc_wlocate(w, x, y);
|
|
Packit |
15a96c |
for (i = 0; i < (len >= w->xs - x ? w->xs - x - 1 : len) && *s; i++) {
|
|
Packit |
15a96c |
wchar_t wc;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
s += one_mbtowc(&wc, s, MB_LEN_MAX);
|
|
Packit |
15a96c |
mc_wputc(w, wc);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
mc_wflush();
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
p->flags |= CHANGED;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Mark a variable as changed.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
static void markch(char *s)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
struct pars *p = (struct pars *)s;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
p->flags |= CHANGED;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Set a string to a given value, but only if we're allowed to.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
static void psets(char *s, const char *w)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
struct pars *p = (struct pars *)s;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
strcpy(s, w);
|
|
Packit |
15a96c |
p->flags |= CHANGED;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Get a a character from the keyboard. Translate lower
|
|
Packit |
15a96c |
* to uppercase and '\r' to '\n'.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
static int rwxgetch(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
int c = wxgetch();
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if (islower(c))
|
|
Packit |
15a96c |
c = toupper(c);
|
|
Packit |
15a96c |
if (c == '\n' || c == '\r' || c == '\033')
|
|
Packit |
15a96c |
return '\n';
|
|
Packit |
15a96c |
return c;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
#ifdef LOGFILE
|
|
Packit |
15a96c |
static void dologopt(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
WIN *w;
|
|
Packit |
15a96c |
int c;
|
|
Packit |
15a96c |
char *logfnstr = _(" A - File name (empty=disable) :");
|
|
Packit |
15a96c |
char *logconn = _(" B - Log connects and hangups :");
|
|
Packit |
15a96c |
char *logxfer = _(" C - Log file transfers :");
|
|
Packit |
15a96c |
char *question = _("Change which setting?");
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
w = mc_wopen(5, 4, 75, 8, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wtitle(w, TMID, _("Logging options"));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", logfnstr, P_LOGFNAME);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", logconn, _(P_LOGCONN));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", logxfer, _(P_LOGXFER));
|
|
Packit |
15a96c |
mc_wlocate(w, 4, 4);
|
|
Packit |
15a96c |
mc_wputs(w, question);
|
|
Packit |
15a96c |
mc_wredraw(w, 1);
|
|
Packit |
15a96c |
while(1) {
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(question) + 5, 5);
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
switch(c) {
|
|
Packit |
15a96c |
case '\n':
|
|
Packit |
15a96c |
mc_wclose(w, 1);
|
|
Packit |
15a96c |
return;
|
|
Packit |
15a96c |
case 'A':
|
|
Packit |
15a96c |
pgets(w, mbslen(logfnstr) + 1, 0,
|
|
Packit |
15a96c |
P_LOGFNAME, PARS_VAL_LEN, PARS_VAL_LEN, 1);
|
|
Packit |
15a96c |
strcpy(logfname,P_LOGFNAME);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'B':
|
|
Packit |
15a96c |
strcpy(P_LOGCONN, yesno(P_LOGCONN[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(logconn) + 1, 1);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(P_LOGCONN));
|
|
Packit |
15a96c |
markch(P_LOGCONN);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'C':
|
|
Packit |
15a96c |
strcpy(P_LOGXFER, yesno(P_LOGXFER[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(logxfer) + 1, 2);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(P_LOGXFER));
|
|
Packit |
15a96c |
markch(P_LOGXFER);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
default:
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
#endif
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
static void dopath(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
WIN *w;
|
|
Packit |
15a96c |
int c;
|
|
Packit |
15a96c |
char *download_directory = _(" A - Download directory :");
|
|
Packit |
15a96c |
char *upload_directory = _(" B - Upload directory :");
|
|
Packit |
15a96c |
char *script_directory = _(" C - Script directory :");
|
|
Packit |
15a96c |
char *script_program = _(" D - Script program :");
|
|
Packit |
15a96c |
char *kermit_program = _(" E - Kermit program :");
|
|
Packit |
15a96c |
#ifdef LOGFILE
|
|
Packit |
15a96c |
char *log_settings = _(" F - Logging options");
|
|
Packit |
15a96c |
#endif
|
|
Packit |
15a96c |
char *question = _("Change which setting?");
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
w = mc_wopen(5, 5, 75, 12, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.44s\n", download_directory, P_DOWNDIR);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.44s\n", upload_directory, P_UPDIR);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.44s\n", script_directory, P_SCRIPTDIR);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.44s\n", script_program, P_SCRIPTPROG);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.44s\n", kermit_program, P_KERMIT);
|
|
Packit |
15a96c |
#ifdef LOGFILE
|
|
Packit |
15a96c |
mc_wprintf(w, "%s\n", log_settings);
|
|
Packit |
15a96c |
#endif
|
|
Packit |
15a96c |
mc_wlocate(w, 4, 8);
|
|
Packit |
15a96c |
mc_wputs(w, question);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wredraw(w, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
while(1) {
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (question) + 5, 8);
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
switch(c) {
|
|
Packit |
15a96c |
case '\n':
|
|
Packit |
15a96c |
mc_wclose(w, 1);
|
|
Packit |
15a96c |
return;
|
|
Packit |
15a96c |
case 'A':
|
|
Packit |
15a96c |
pgets(w, mbslen (download_directory) + 1, 0, P_DOWNDIR, 64, 64, 1);
|
|
Packit |
15a96c |
init_dir('d');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'B':
|
|
Packit |
15a96c |
pgets(w, mbslen (upload_directory) + 1, 1, P_UPDIR, 64, 64, 1);
|
|
Packit |
15a96c |
init_dir('u');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'C':
|
|
Packit |
15a96c |
pgets(w, mbslen (script_directory) + 1, 2, P_SCRIPTDIR, 64, 64, 1);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'D':
|
|
Packit |
15a96c |
pgets(w, mbslen (script_program) + 1, 3, P_SCRIPTPROG, 64, 64, 1);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'E':
|
|
Packit |
15a96c |
pgets(w, mbslen (kermit_program) + 1, 4, P_KERMIT, 64, 64, 1);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
#ifdef LOGFILE
|
|
Packit |
15a96c |
case 'F':
|
|
Packit |
15a96c |
dologopt();
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
#endif
|
|
Packit |
15a96c |
default:
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
const char *yesno(int k)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
return(k ? N_("Yes") : N_("No "));
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Input the definition of an up/download protocol.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
static void inputproto(WIN *w, int n)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
int c = 0;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mpars[PROTO_BASE + n].flags |= CHANGED;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if (P_PNAME(n)[0] == '\0') {
|
|
Packit |
15a96c |
P_PNN(n) = 'Y';
|
|
Packit |
15a96c |
P_PUD(n) = 'U';
|
|
Packit |
15a96c |
P_PFULL(n) = 'N';
|
|
Packit |
15a96c |
P_PPROG(n)[0] = 0;
|
|
Packit |
15a96c |
P_PIORED(n) = 'Y';
|
|
Packit |
15a96c |
mc_wlocate(w, 4, n+1);
|
|
Packit |
15a96c |
mc_wputs(w, " ");
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
mc_wlocate(w, 4, n + 1);
|
|
Packit |
15a96c |
mc_wgets(w, P_PNAME(n), 10, 64);
|
|
Packit |
15a96c |
pgets(w, 15, n+1, P_PPROG(n), 31, 64, 0);
|
|
Packit |
15a96c |
do {
|
|
Packit |
15a96c |
mc_wlocate(w, 47, n + 1);
|
|
Packit |
15a96c |
mc_wprintf(w, "%c", P_PNN(n));
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
if (c == 'Y')
|
|
Packit |
15a96c |
P_PNN(n) = 'Y';
|
|
Packit |
15a96c |
if (c == 'N')
|
|
Packit |
15a96c |
P_PNN(n) = 'N';
|
|
Packit |
15a96c |
} while (c != '\r' && c != '\n');
|
|
Packit |
15a96c |
do {
|
|
Packit |
15a96c |
mc_wlocate(w, 52, n + 1);
|
|
Packit |
15a96c |
mc_wprintf(w, "%c", P_PUD(n));
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
if (c == 'U')
|
|
Packit |
15a96c |
P_PUD(n) = 'U';
|
|
Packit |
15a96c |
if (c == 'D')
|
|
Packit |
15a96c |
P_PUD(n) = 'D';
|
|
Packit |
15a96c |
} while (c != '\r' && c != '\n');
|
|
Packit |
15a96c |
do {
|
|
Packit |
15a96c |
mc_wlocate(w, 57, n + 1);
|
|
Packit |
15a96c |
mc_wprintf(w, "%c", P_PFULL(n));
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
if (c == 'Y')
|
|
Packit |
15a96c |
P_PFULL(n) = 'Y';
|
|
Packit |
15a96c |
if (c == 'N')
|
|
Packit |
15a96c |
P_PFULL(n) = 'N';
|
|
Packit |
15a96c |
} while (c != '\r' && c != '\n');
|
|
Packit |
15a96c |
do {
|
|
Packit |
15a96c |
mc_wlocate(w, 65, n + 1);
|
|
Packit |
15a96c |
mc_wprintf(w, "%c", P_PIORED(n));
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
if (c == 'Y')
|
|
Packit |
15a96c |
P_PIORED(n) = 'Y';
|
|
Packit |
15a96c |
if (c == 'N')
|
|
Packit |
15a96c |
P_PIORED(n) = 'N';
|
|
Packit |
15a96c |
} while (c != '\r' && c != '\n');
|
|
Packit |
15a96c |
do {
|
|
Packit |
15a96c |
mc_wlocate(w, 73, n + 1);
|
|
Packit |
15a96c |
mc_wprintf(w, "%c", P_MUL(n));
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
if (c == 'Y')
|
|
Packit |
15a96c |
P_MUL(n) = 'Y';
|
|
Packit |
15a96c |
if (c == 'N')
|
|
Packit |
15a96c |
P_MUL(n) = 'N';
|
|
Packit |
15a96c |
} while (c != '\r' && c != '\n');
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
static void doproto(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
WIN *w;
|
|
Packit |
15a96c |
int f, c;
|
|
Packit |
15a96c |
char *zmodem_download = _("M Zmodem download string activates...");
|
|
Packit |
15a96c |
char *use_filename_selection = _("N Use filename selection window......");
|
|
Packit |
15a96c |
char *prompt_downdir = _("O Prompt for download directory......");
|
|
Packit |
15a96c |
char *question = _("Change which setting? (SPACE to delete)");
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
w = mc_wopen(1, 3, 78, 20, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
mc_wputs(w, _(" Name Program"));
|
|
Packit |
15a96c |
mc_wlocate(w, 46, 0);
|
|
Packit |
15a96c |
mc_wputs(w,
|
|
Packit |
15a96c |
/* TRANSLATORS:
|
|
Packit |
15a96c |
* Name: Protocol sends filename internally
|
|
Packit |
15a96c |
* U/D: Command is used for upload or download
|
|
Packit |
15a96c |
* FullScr: Command runs fullscreen
|
|
Packit |
15a96c |
* IO-Red: Redirect output of commands to logfile
|
|
Packit |
15a96c |
* Multi: Protocol can transfer multiple files at once */
|
|
Packit |
15a96c |
_("Name U/D FullScr IO-Red. Multi"));
|
|
Packit |
15a96c |
for (f = 0; f < 12; f++) {
|
|
Packit |
15a96c |
mc_wlocate(w, 1, f + 1);
|
|
Packit |
15a96c |
if (P_PNAME(f)[0])
|
|
Packit |
15a96c |
mc_wprintf(w, "%c %-10.10s %-31.31s %c %c %c %c %c",
|
|
Packit |
15a96c |
'A' + f,
|
|
Packit |
15a96c |
P_PNAME(f), P_PPROG(f),
|
|
Packit |
15a96c |
P_PNN(f), P_PUD(f),
|
|
Packit |
15a96c |
P_PFULL(f), P_PIORED(f),
|
|
Packit |
15a96c |
P_MUL(f));
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
mc_wprintf(w, "%c -", 'A' + f);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
mc_wlocate(w, 1, 13);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %c", zmodem_download, P_PAUTO[0]);
|
|
Packit |
15a96c |
mc_wlocate(w, 1, 14);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s", use_filename_selection, _(P_FSELW));
|
|
Packit |
15a96c |
mc_wlocate(w, 1, 15);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s", prompt_downdir, _(P_ASKDNDIR));
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wlocate(w, 3, 17);
|
|
Packit |
15a96c |
mc_wputs(w, question);
|
|
Packit |
15a96c |
mc_wredraw(w, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
do {
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (question) + 4, 17);
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
if (c >= 'A' && c <= 'L')
|
|
Packit |
15a96c |
inputproto(w, c - 'A');
|
|
Packit |
15a96c |
if (c == ' ') {
|
|
Packit |
15a96c |
mc_wlocate(w, 3, 17);
|
|
Packit |
15a96c |
mc_wputs(w, _("Delete which protocol? "));
|
|
Packit |
15a96c |
mc_wclreol(w);
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
if (c >= 'A' && c <= 'L') {
|
|
Packit |
15a96c |
P_PNAME(c - 'A')[0] = '\0';
|
|
Packit |
15a96c |
mpars[PROTO_BASE + (c - 'A')].flags |= CHANGED;
|
|
Packit |
15a96c |
mc_wlocate(w, 3, c - 'A' + 1);
|
|
Packit |
15a96c |
mc_wclreol(w);
|
|
Packit |
15a96c |
mc_wputs(w, " -");
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
mc_wlocate(w, 3, 17);
|
|
Packit |
15a96c |
mc_wputs(w, question);
|
|
Packit |
15a96c |
c = ' ';
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
else if (c == 'M') {
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (zmodem_download) + 2, 13);
|
|
Packit |
15a96c |
mc_wprintf(w, " \b");
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
if (c >= 'A' && c <= 'L') {
|
|
Packit |
15a96c |
P_PAUTO[0] = c;
|
|
Packit |
15a96c |
markch(P_PAUTO);
|
|
Packit |
15a96c |
mc_wprintf(w, "%c", c);
|
|
Packit |
15a96c |
} else if (c == '\n' || c == ' ') {
|
|
Packit |
15a96c |
P_PAUTO[0] = ' ';
|
|
Packit |
15a96c |
markch(P_PAUTO);
|
|
Packit |
15a96c |
} else {
|
|
Packit |
15a96c |
mc_wprintf(w, "%c", P_PAUTO[0]);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
c = 0;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
else if (c == 'N') {
|
|
Packit |
15a96c |
strcpy(P_FSELW, yesno(P_FSELW[0] == 'N'));
|
|
Packit |
15a96c |
if (P_FSELW[0] == 'N') {
|
|
Packit |
15a96c |
strcpy(P_ASKDNDIR, "No ");
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (prompt_downdir) + 2, 15);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(P_ASKDNDIR));
|
|
Packit |
15a96c |
markch(P_ASKDNDIR);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (use_filename_selection) + 2, 14);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(P_FSELW));
|
|
Packit |
15a96c |
markch(P_FSELW);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
else if (c == 'O') {
|
|
Packit |
15a96c |
strcpy(P_ASKDNDIR, yesno(P_ASKDNDIR[0] == 'N'));
|
|
Packit |
15a96c |
if (P_ASKDNDIR[0] == 'Y') {
|
|
Packit |
15a96c |
strcpy(P_FSELW, "Yes");
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (use_filename_selection) + 2, 14);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(P_FSELW));
|
|
Packit |
15a96c |
markch(P_FSELW);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (prompt_downdir) + 2, 15);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(P_ASKDNDIR));
|
|
Packit |
15a96c |
markch(P_ASKDNDIR);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
} while (c != '\n');
|
|
Packit |
15a96c |
mc_wclose(w, 1);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
static void doserial(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
WIN *w;
|
|
Packit |
15a96c |
char *serial_device = _(" A - Serial Device :");
|
|
rpm-build |
074359 |
#if !HAVE_LOCKDEV
|
|
Packit |
15a96c |
char *lockfile_location = _(" B - Lockfile Location :");
|
|
rpm-build |
074359 |
#endif
|
|
Packit |
15a96c |
char *callin_program = _(" C - Callin Program :");
|
|
Packit |
15a96c |
char *callout_program = _(" D - Callout Program :");
|
|
Packit |
15a96c |
char *bps_par_bits = _(" E - Bps/Par/Bits :");
|
|
Packit |
15a96c |
char *hardware_flow_control = _(" F - Hardware Flow Control :");
|
|
Packit |
15a96c |
char *software_flow_control = _(" G - Software Flow Control :");
|
|
Packit |
15a96c |
char *question = _("Change which setting?");
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
w = mc_wopen(5, 4, 75, 12, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.41s\n", serial_device, P_PORT);
|
|
Packit |
15a96c |
#if !HAVE_LOCKDEV
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.41s\n", lockfile_location, P_LOCK);
|
|
Packit |
15a96c |
#else
|
|
Packit |
15a96c |
mc_wprintf(w, "\n");
|
|
Packit |
15a96c |
#endif
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.41s\n", callin_program, P_CALLIN);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.41s\n", callout_program, P_CALLOUT);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s %s%s%s\n",
|
|
Packit |
15a96c |
bps_par_bits, P_BAUDRATE, P_BITS, P_PARITY, P_STOPB);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", hardware_flow_control, _(P_HASRTS));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", software_flow_control, _(P_HASXON));
|
|
Packit |
15a96c |
mc_wlocate(w, 4, 8);
|
|
Packit |
15a96c |
mc_wputs(w, question);
|
|
Packit |
15a96c |
mc_wredraw(w, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
while(1) {
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (question) + 5, 8);
|
|
Packit |
15a96c |
switch (rwxgetch()) {
|
|
Packit |
15a96c |
case '\n':
|
|
Packit |
15a96c |
mc_wclose(w, 1);
|
|
Packit |
15a96c |
return;
|
|
Packit |
15a96c |
case 'A':
|
|
Packit |
15a96c |
pgets(w, mbslen (serial_device) + 1, 0, P_PORT, 64, 64, 1);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
#if !HAVE_LOCKDEV
|
|
Packit |
15a96c |
case 'B':
|
|
Packit |
15a96c |
pgets(w, mbslen (lockfile_location) + 1, 1, P_LOCK, 64, 64, 1);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
#endif
|
|
Packit |
15a96c |
case 'C':
|
|
Packit |
15a96c |
pgets(w, mbslen (callin_program) + 1, 2, P_CALLIN, 64, 64, 1);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'D':
|
|
Packit |
15a96c |
pgets(w, mbslen (callout_program) + 1, 3, P_CALLOUT, 64, 64, 1);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'E':
|
|
Packit |
15a96c |
get_bbp(P_BAUDRATE, P_BITS, P_PARITY, P_STOPB, 0);
|
|
Packit |
15a96c |
if (portfd >= 0)
|
|
Packit |
15a96c |
port_init();
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (bps_par_bits) + 1, 4);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s%s%s \n", P_BAUDRATE, P_BITS, P_PARITY, P_STOPB);
|
|
Packit |
15a96c |
show_status();
|
|
Packit |
15a96c |
markch(P_BAUDRATE);
|
|
Packit |
15a96c |
markch(P_BITS);
|
|
Packit |
15a96c |
markch(P_PARITY);
|
|
Packit |
15a96c |
markch(P_STOPB);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'F':
|
|
Packit |
15a96c |
strcpy(P_HASRTS, yesno(P_HASRTS[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (hardware_flow_control) + 1, 5);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(P_HASRTS));
|
|
Packit |
15a96c |
if (portfd >= 0)
|
|
Packit |
15a96c |
port_init();
|
|
Packit |
15a96c |
markch(P_HASRTS);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'G':
|
|
Packit |
15a96c |
strcpy(P_HASXON, yesno(P_HASXON[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (software_flow_control) + 1, 6);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(P_HASXON));
|
|
Packit |
15a96c |
if (portfd >= 0)
|
|
Packit |
15a96c |
port_init();
|
|
Packit |
15a96c |
markch(P_HASXON);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
default:
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
char * sspd(char *sptyp)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
if (sptyp[0] == 'd')
|
|
Packit |
15a96c |
return (_("DTE speed "));
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
return (_("line speed"));
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
static void domodem(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
WIN *w;
|
|
Packit |
15a96c |
char *str;
|
|
Packit |
15a96c |
int c, x, y, ypos, maxl, string_size;
|
|
Packit |
15a96c |
const char *init_string = _(" A - Init string .........");
|
|
Packit |
15a96c |
const char *reset_string = _(" B - Reset string ........");
|
|
Packit |
15a96c |
const char *dialing_prefix_1 = _(" C - Dialing prefix #1....");
|
|
Packit |
15a96c |
const char *dialing_suffix_1 = _(" D - Dialing suffix #1....");
|
|
Packit |
15a96c |
const char *dialing_prefix_2 = _(" E - Dialing prefix #2....");
|
|
Packit |
15a96c |
const char *dialing_suffix_2 = _(" F - Dialing suffix #2....");
|
|
Packit |
15a96c |
const char *dialing_prefix_3 = _(" G - Dialing prefix #3....");
|
|
Packit |
15a96c |
const char *dialing_suffix_3 = _(" H - Dialing suffix #3....");
|
|
Packit |
15a96c |
const char *connect_string = _(" I - Connect string ......");
|
|
Packit |
15a96c |
const char *no_connect_strings = _(" J - No connect strings ..");
|
|
Packit |
15a96c |
const char *hangup_string = _(" K - Hang-up string ......");
|
|
Packit |
15a96c |
const char *dial_cancel_string = _(" L - Dial cancel string ..");
|
|
Packit |
15a96c |
const char *dial_time = _(" M - Dial time ...........");
|
|
Packit |
15a96c |
const char *delay_before_redial = _(" N - Delay before redial .");
|
|
Packit |
15a96c |
const char *number_of_tries = _(" O - Number of tries .....");
|
|
Packit |
15a96c |
const char *dtr_drop_time = _(" P - DTR drop time (0=no).");
|
|
Packit |
15a96c |
const char *auto_bps_detect = _(" Q - Auto bps detect .....");
|
|
Packit |
15a96c |
const char *modem_has_dcd_line = _(" R - Modem has DCD line ..");
|
|
Packit |
15a96c |
const char *shown_speed = _(" S - Status line shows ...");
|
|
Packit |
15a96c |
const char *multi_node = _(" T - Multi-line untag ....");
|
|
Packit |
15a96c |
const char *question = _("Change which setting?");
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
const char *defaults[] =
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
"~^M~AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0^M",
|
|
Packit |
15a96c |
"^M~ATZ^M~",
|
|
Packit |
15a96c |
};
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
w = mc_wopen(2, 2, 77, 22, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
dirflush = 0;
|
|
Packit |
15a96c |
mc_wtitle(w, TMID, _("Modem and dialing parameter setup"));
|
|
Packit |
15a96c |
mc_wprintf(w, "\n");
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", init_string, P_MINIT);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", reset_string, P_MRESET);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", dialing_prefix_1, P_MDIALPRE);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", dialing_suffix_1, P_MDIALSUF);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", dialing_prefix_2, P_MDIALPRE2);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", dialing_suffix_2, P_MDIALSUF2);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", dialing_prefix_3, P_MDIALPRE3);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", dialing_suffix_3, P_MDIALSUF3);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", connect_string, P_MCONNECT);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %-20.20s %.20s\n", no_connect_strings, P_MNOCON1, P_MNOCON2);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (no_connect_strings) + 1, 11);
|
|
Packit |
15a96c |
mc_wprintf(w, "%-20.20s %.20s\n", P_MNOCON3, P_MNOCON4);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", hangup_string, P_MHANGUP);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.48s\n", dial_cancel_string, P_MDIALCAN);
|
|
Packit |
15a96c |
mc_wprintf(w, "\n");
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.3s\n", dial_time, P_MDIALTIME);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.3s\n", delay_before_redial, P_MRDELAY);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.3s\n", number_of_tries, P_MRETRIES);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %.3s\n", dtr_drop_time, P_MDROPDTR);
|
|
Packit |
15a96c |
mc_wlocate(w, 34, 15);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", auto_bps_detect, _(P_MAUTOBAUD));
|
|
Packit |
15a96c |
mc_wlocate(w, 34, 16);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", modem_has_dcd_line, _(P_HASDCD));
|
|
Packit |
15a96c |
mc_wlocate(w, 34, 17);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", shown_speed, sspd(P_SHOWSPD));
|
|
Packit |
15a96c |
mc_wlocate(w, 34, 18); /* Option for multi-node untag */
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", multi_node, _(P_MULTILINE)); /* er 18-Apr-99 */
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wlocate(w, 1, 20);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", question);
|
|
Packit |
15a96c |
x = w->curx; y = w->cury;
|
|
Packit |
15a96c |
mc_wprintf(w, _(" Return or Esc to exit. Edit A+B to get defaults."));
|
|
Packit |
15a96c |
mc_wredraw(w, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
while (1) {
|
|
Packit |
15a96c |
mc_wlocate(w, x, y);
|
|
Packit |
15a96c |
mc_wflush();
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
ypos = 1;
|
|
Packit |
15a96c |
maxl = 64;
|
|
Packit |
15a96c |
string_size = 0;
|
|
Packit |
15a96c |
switch(c) {
|
|
Packit |
15a96c |
case 'M':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(dial_time);
|
|
Packit |
15a96c |
case 'N':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(delay_before_redial);
|
|
Packit |
15a96c |
case 'O':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(number_of_tries);
|
|
Packit |
15a96c |
case 'P':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(dtr_drop_time);
|
|
Packit |
15a96c |
ypos++;
|
|
Packit |
15a96c |
maxl = 4;
|
|
Packit |
15a96c |
case 'K':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(hangup_string);
|
|
Packit |
15a96c |
case 'L':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(dial_cancel_string);
|
|
Packit |
15a96c |
ypos -= 2;
|
|
Packit |
15a96c |
c += 3;
|
|
Packit |
15a96c |
case 'A':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(init_string);
|
|
Packit |
15a96c |
case 'B':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(reset_string);
|
|
Packit |
15a96c |
case 'C':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(dialing_prefix_1);
|
|
Packit |
15a96c |
case 'D':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(dialing_suffix_1);
|
|
Packit |
15a96c |
case 'E':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(dialing_prefix_2);
|
|
Packit |
15a96c |
case 'F':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(dialing_suffix_2);
|
|
Packit |
15a96c |
case 'G':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(dialing_prefix_3);
|
|
Packit |
15a96c |
case 'H':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(dialing_suffix_3);
|
|
Packit |
15a96c |
case 'I':
|
|
Packit |
15a96c |
if (string_size == 0)
|
|
Packit |
15a96c |
string_size = mbslen(connect_string);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
int loc = c - 'A';
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* Calculate adress of string to modify */
|
|
Packit |
15a96c |
str = P_MINIT + loc * sizeof(struct pars);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* Nowadays (2011), the modem init and reset strings are seldomly
|
|
Packit |
15a96c |
* used, so we initialize those values to an empty string and
|
|
Packit |
15a96c |
* offer the default value when trying to set those strings from
|
|
Packit |
15a96c |
* an empty value */
|
|
Packit |
15a96c |
if ((loc == 0 || loc == 1) && !*str)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
strncpy(str, defaults[loc], PARS_VAL_LEN);
|
|
Packit |
15a96c |
str[PARS_VAL_LEN - 1] = 0;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wlocate(w, string_size + 1, 1 + loc);
|
|
Packit |
15a96c |
mc_wprintf(w, "%.48s\n", str);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
pgets(w, string_size + 1, ypos + loc, str, maxl, maxl, 0);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'J':
|
|
Packit |
15a96c |
string_size = mbslen (no_connect_strings);
|
|
Packit |
15a96c |
/* Walk through all four */
|
|
Packit |
15a96c |
pgets(w, string_size + 1, 10, P_MNOCON1, 20, 64, 0);
|
|
Packit |
15a96c |
pgets(w, string_size + 1 + 22, 10, P_MNOCON2, 20, 64, 0);
|
|
Packit |
15a96c |
pgets(w, string_size + 1 , 11, P_MNOCON3, 20, 64, 0);
|
|
Packit |
15a96c |
pgets(w, string_size + 1 + 22, 11, P_MNOCON4, 20, 64, 0);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'Q':
|
|
Packit |
15a96c |
psets(P_MAUTOBAUD, yesno(P_MAUTOBAUD[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, 35 + mbslen (auto_bps_detect), 15);
|
|
Packit |
15a96c |
mc_wputs(w, _(P_MAUTOBAUD));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'R':
|
|
Packit |
15a96c |
psets(P_HASDCD, yesno(P_HASDCD[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, 35 + mbslen (modem_has_dcd_line), 16);
|
|
Packit |
15a96c |
mc_wputs(w, _(P_HASDCD));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'S':
|
|
Packit |
15a96c |
psets(P_SHOWSPD, P_SHOWSPD[0] == 'd' ? "l": "d");
|
|
Packit |
15a96c |
mc_wlocate(w, 35 + mbslen (shown_speed), 17);
|
|
Packit |
15a96c |
mc_wputs(w, sspd(P_SHOWSPD));
|
|
Packit |
15a96c |
show_status();
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'T': /* Update for multi-node */
|
|
Packit |
15a96c |
psets(P_MULTILINE, yesno(P_MULTILINE[0] == 'N' ));
|
|
Packit |
15a96c |
mc_wlocate(w, 35 + mbslen(multi_node), 18);
|
|
Packit |
15a96c |
mc_wputs(w, _(P_MULTILINE));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
/* er 18-Apr-99 */
|
|
Packit |
15a96c |
case '\n':
|
|
Packit |
15a96c |
dirflush = 1;
|
|
Packit |
15a96c |
mc_wclose(w, 1);
|
|
Packit |
15a96c |
return;
|
|
Packit |
15a96c |
default:
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Screen and keyboard menu.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
static void doscrkeyb(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
WIN *w, *w1;
|
|
Packit |
15a96c |
int c;
|
|
Packit |
15a96c |
int once = 0;
|
|
Packit |
15a96c |
int clr = 1;
|
|
Packit |
15a96c |
int tmp_c; /* fmg - need it to color keep in sanity checks */
|
|
Packit |
15a96c |
char buf[16];
|
|
Packit |
15a96c |
int miny = 2, maxy = 22;
|
|
Packit |
15a96c |
int old_stat = P_STATLINE[0];
|
|
Packit |
15a96c |
FILE *fp;
|
|
Packit |
15a96c |
char *command_key = _(" A - Command key is :");
|
|
Packit |
15a96c |
char *backspace_key = _(" B - Backspace key sends :");
|
|
Packit |
15a96c |
char *status_line = _(" C - Status line is :");
|
|
Packit |
15a96c |
char *alarm_sound = _(" D - Alarm sound :");
|
|
Packit |
15a96c |
char *foreground_color_menu = _(" E - Foreground Color (menu):");
|
|
Packit |
15a96c |
char *background_color_menu = _(" F - Background Color (menu):");
|
|
Packit |
15a96c |
char *foreground_color_term = _(" G - Foreground Color (term):");
|
|
Packit |
15a96c |
char *background_color_term = _(" H - Background Color (term):");
|
|
Packit |
15a96c |
char *foreground_color_stat = _(" I - Foreground Color (stat):");
|
|
Packit |
15a96c |
char *background_color_stat = _(" J - Background Color (stat):");
|
|
Packit |
15a96c |
char *history_buffer_size = _(" K - History Buffer Size :");
|
|
Packit |
15a96c |
char *macros_file = _(" L - Macros file :");
|
|
Packit |
15a96c |
char *macros_enabled = _(" N - Macros enabled :");
|
|
Packit |
15a96c |
char *character_conversion = _(" O - Character conversion :");
|
|
Packit |
15a96c |
char *add_linefeed = _(" P - Add linefeed :");
|
|
Packit |
15a96c |
char *local_echo_str = _(" Q - Local echo :");
|
|
Packit |
15a96c |
char *line_wrap = _(" R - Line Wrap :");
|
|
Packit |
15a96c |
char *display_hex_str = _(" S - Hex Display :");
|
|
Packit |
15a96c |
char *add_carriagereturn = _(" T - Add carriage return :");
|
|
Packit |
15a96c |
char *question = _("Change which setting? (Esc to exit)");
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
w = mc_wopen(15, miny, 69, maxy, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wtitle(w, TMID, _("Screen and keyboard"));
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", command_key, P_ESCAPE);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", backspace_key, P_BACKSPACE);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", status_line, _(P_STATLINE));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", alarm_sound, _(P_SOUND));
|
|
Packit |
15a96c |
/* fmg - colors support */
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", foreground_color_menu, _(J_col[mfcolor]));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", background_color_menu, _(J_col[mbcolor]));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", foreground_color_term, _(J_col[tfcolor]));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", background_color_term, _(J_col[tbcolor]));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", foreground_color_stat, _(J_col[sfcolor]));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", background_color_stat, _(J_col[sbcolor]));
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* MARK updated 02/17/95 - Configurable history buffer size */
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", history_buffer_size, P_HISTSIZE);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* fmg - macros support */
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", macros_file, P_MACROS);
|
|
Packit |
15a96c |
mc_wprintf(w, _(" M - Edit Macros\n"));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", macros_enabled, _(P_MACENAB));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", character_conversion, P_CONVF);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", add_linefeed, _(P_ADDLINEFEED));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", local_echo_str, _(P_LOCALECHO));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", line_wrap, _(P_LINEWRAP));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", display_hex_str, _(P_DISPLAYHEX));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", add_carriagereturn, _(P_ADDCARRIAGERETURN));
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wredraw(w, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
while (1) {
|
|
Packit |
15a96c |
if (clr) {
|
|
Packit |
15a96c |
mc_wlocate(w, 2, maxy - miny);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", question);
|
|
Packit |
15a96c |
mc_wclreol(w);
|
|
Packit |
15a96c |
clr = 0;
|
|
Packit |
15a96c |
} else
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (question) + 3, maxy - miny);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if (once) { /* fmg - allow to force looping */
|
|
Packit |
15a96c |
c = once;
|
|
Packit |
15a96c |
once = 0;
|
|
Packit |
15a96c |
} else
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
#if 0 /* This might save us someday */
|
|
Packit |
15a96c |
if (!usecolor && (c >= 'E' && c <= 'J')) {
|
|
Packit |
15a96c |
werror(_("You can't change colors in black and white mode"));
|
|
Packit |
15a96c |
continue;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
#endif
|
|
Packit |
15a96c |
switch(c) {
|
|
Packit |
15a96c |
case '\n':
|
|
Packit |
15a96c |
/* fmg - sanity checks... "we found the enemy and he is us" :-) */
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if (mfcolor == mbcolor) { /* oops... */
|
|
Packit |
15a96c |
tmp_c = mfcolor; /* save color (same for both, right?) */
|
|
Packit |
15a96c |
mfcolor = WHITE; /* make sure they can see error :-) */
|
|
Packit |
15a96c |
mbcolor = BLACK;
|
|
Packit |
15a96c |
werror(_("Menu foreground == background color, change!"));
|
|
Packit |
15a96c |
mfcolor = tmp_c; /* restore colors */
|
|
Packit |
15a96c |
mbcolor = tmp_c;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
if (tfcolor == tbcolor) { /* oops... */
|
|
Packit |
15a96c |
tmp_c = mfcolor; /* save color (same for both, right?) */
|
|
Packit |
15a96c |
mfcolor = WHITE; /* make sure they can see error :-) */
|
|
Packit |
15a96c |
mbcolor = BLACK;
|
|
Packit |
15a96c |
werror(_("Terminal foreground == background color, change!"));
|
|
Packit |
15a96c |
mfcolor = tmp_c; /* restore colors */
|
|
Packit |
15a96c |
mbcolor = tmp_c;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
/* fmg - I'll let them change sfcolor=sbcolor because it's just
|
|
Packit |
15a96c |
another way of turning "off" the status line... */
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* MARK updated 02/17/95, Warn user to restart */
|
|
Packit |
15a96c |
/* minicom if they changed history buffer size */
|
|
Packit |
15a96c |
if (atoi(P_HISTSIZE) != num_hist_lines) {
|
|
Packit |
15a96c |
w1 = mc_wopen(14, 9, 70, 15, BSINGLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
mc_wtitle(w1, TMID, _("History Buffer Size"));
|
|
Packit |
15a96c |
mc_wputs(w1, _("\n\
|
|
Packit |
15a96c |
You have changed the history buffer size.\n\
|
|
Packit |
15a96c |
You will need to save the configuration file and\n\
|
|
Packit |
15a96c |
restart minicom for the change to take effect.\n\n\
|
|
Packit |
15a96c |
Hit a key to Continue... "));
|
|
Packit |
15a96c |
mc_wredraw(w1, 1);
|
|
Packit |
15a96c |
c = wxgetch();
|
|
Packit |
15a96c |
mc_wclose(w1, 1);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wclose(w, 1);
|
|
Packit |
15a96c |
/* If status line enabled/disabled resize screen. */
|
|
Packit |
15a96c |
if (P_STATLINE[0] != old_stat)
|
|
Packit |
15a96c |
init_emul(terminal, 0);
|
|
Packit |
15a96c |
return;
|
|
Packit |
15a96c |
case 'A':
|
|
Packit |
15a96c |
w1 = mc_wopen(11, 8, 73, 17, BSINGLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
mc_wtitle(w1, TMID, _("Program new command key"));
|
|
Packit |
15a96c |
mc_wputs(w1, _(
|
|
Packit |
15a96c |
"\n Press the new command key. If you want to use\n"
|
|
Packit |
15a96c |
" the META or ALT key enter:\n\n"
|
|
Packit |
15a96c |
" o SPACE if your meta key sets the 8th bit high\n"
|
|
Packit |
15a96c |
" o ESC if your meta key sends the ESCAPE prefix (standard)\n"
|
|
Packit |
15a96c |
"\n\n Press new command key: "));
|
|
Packit |
15a96c |
mc_wredraw(w1, 1);
|
|
Packit |
15a96c |
c = wxgetch();
|
|
Packit |
15a96c |
mc_wclose(w1, 1);
|
|
Packit |
15a96c |
if (c == ' ')
|
|
Packit |
15a96c |
strcpy(buf, N_("Meta-8th bit "));
|
|
Packit |
15a96c |
else if (c == 27)
|
|
Packit |
15a96c |
strcpy(buf, N_("Escape (Meta)"));
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
sprintf(buf, "^%c ", (c & 0x1f) + 'A' - 1);
|
|
Packit |
15a96c |
psets(P_ESCAPE, buf);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (command_key) + 1, 0);
|
|
Packit |
15a96c |
mc_wputs(w, _(buf));
|
|
Packit |
15a96c |
clr = 1;
|
|
Packit |
15a96c |
alt_override = 0;
|
|
Packit |
15a96c |
switch(P_ESCAPE[0]) {
|
|
Packit |
15a96c |
case '^':
|
|
Packit |
15a96c |
c = P_ESCAPE[1] & 31;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'E':
|
|
Packit |
15a96c |
c = 27;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
default:
|
|
Packit |
15a96c |
c = 128;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
keyboard(KSETESC, c);
|
|
Packit |
15a96c |
show_status();
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'B':
|
|
Packit |
15a96c |
if (P_BACKSPACE[0] == 'D')
|
|
Packit |
15a96c |
psets(P_BACKSPACE, "BS");
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
psets(P_BACKSPACE, "DEL");
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (backspace_key) + 1, 1);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", P_BACKSPACE);
|
|
Packit |
15a96c |
keyboard(KSETBS, P_BACKSPACE[0] == 'B' ? 8 : 127);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'C':
|
|
Packit |
15a96c |
if (P_STATLINE[0] == 'e') {
|
|
Packit |
15a96c |
psets(P_STATLINE, N_("disabled"));
|
|
Packit |
15a96c |
tempst = 1;
|
|
Packit |
15a96c |
} else {
|
|
Packit |
15a96c |
psets(P_STATLINE, N_("enabled"));
|
|
Packit |
15a96c |
/* See if it fits on screen */
|
|
Packit |
15a96c |
if (LINES > 24)
|
|
Packit |
15a96c |
tempst = 0;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (status_line) + 1, 2);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(P_STATLINE));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'D':
|
|
Packit |
15a96c |
psets(P_SOUND, yesno(P_SOUND[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (alarm_sound) + 1, 3);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s", _(P_SOUND));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'E': /* fmg - letters cycle colors */
|
|
Packit |
15a96c |
if (mfcolor == WHITE)
|
|
Packit |
15a96c |
mfcolor = BLACK;
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
mfcolor++;
|
|
Packit |
15a96c |
psets(P_MFG, J_col[mfcolor]);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (foreground_color_menu) + 1, 4);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(J_col[mfcolor]));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'F': /* fmg - letters cycle colors */
|
|
Packit |
15a96c |
if (mbcolor == WHITE)
|
|
Packit |
15a96c |
mbcolor = BLACK;
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
mbcolor++;
|
|
Packit |
15a96c |
psets(P_MBG, J_col[mbcolor]);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (background_color_menu) + 1, 5);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(J_col[mbcolor]));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'G': /* fmg - letters cycle colors */
|
|
Packit |
15a96c |
if (tfcolor == WHITE)
|
|
Packit |
15a96c |
tfcolor = BLACK;
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
tfcolor++;
|
|
Packit |
15a96c |
psets(P_TFG, J_col[tfcolor]);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (foreground_color_term) + 1, 6);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(J_col[tfcolor]));
|
|
Packit |
15a96c |
if (us)
|
|
Packit |
15a96c |
vt_pinit(us, tfcolor, tbcolor);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'H': /* fmg - letters cycle colors */
|
|
Packit |
15a96c |
if (tbcolor == WHITE)
|
|
Packit |
15a96c |
tbcolor = BLACK;
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
tbcolor++;
|
|
Packit |
15a96c |
psets(P_TBG, J_col[tbcolor]);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (background_color_term) + 1, 7);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(J_col[tbcolor]));
|
|
Packit |
15a96c |
if (us)
|
|
Packit |
15a96c |
vt_pinit(us, tfcolor, tbcolor);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'I': /* fmg - letters cycle colors & redraw stat line */
|
|
Packit |
15a96c |
if (sfcolor == WHITE)
|
|
Packit |
15a96c |
sfcolor = BLACK;
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
sfcolor++;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* fmg - this causes redraw of status line (if any)
|
|
Packit |
15a96c |
in current color */
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if (st) {
|
|
Packit |
15a96c |
mc_wclose(st,0);
|
|
Packit |
15a96c |
st = mc_wopen(0, LINES - 1, COLS - 1, LINES - 1, BNONE,
|
|
Packit |
15a96c |
XA_NORMAL, sfcolor, sbcolor, 1, 0, 1);
|
|
Packit |
15a96c |
show_status();
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
psets(P_SFG, J_col[sfcolor]);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (foreground_color_stat) + 1, 8);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(J_col[sfcolor]));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'J': /* fmg - letters cycle colors & redraw stat line */
|
|
Packit |
15a96c |
if (sbcolor == WHITE)
|
|
Packit |
15a96c |
sbcolor = BLACK;
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
sbcolor++;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* fmg - this causes redraw of status line (if any)
|
|
Packit |
15a96c |
in current color */
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if (st) {
|
|
Packit |
15a96c |
mc_wclose(st,0);
|
|
Packit |
15a96c |
st = mc_wopen(0, LINES - 1, COLS - 1, LINES - 1, BNONE,
|
|
Packit |
15a96c |
XA_NORMAL, sfcolor, sbcolor, 1, 0, 0);
|
|
Packit |
15a96c |
show_status();
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
psets(P_SBG, J_col[sbcolor]);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (background_color_stat) + 1, 9);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(J_col[sbcolor]));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'K': /* MARK updated 02/17/95 - Config history size */
|
|
Packit |
15a96c |
pgets(w, mbslen (history_buffer_size) + 1, 10,
|
|
Packit |
15a96c |
P_HISTSIZE, 6, 6, 0);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* In case gibberish or a value was out of bounds, */
|
|
Packit |
15a96c |
/* limit history buffer size between 0 to 5000 lines */
|
|
Packit |
15a96c |
/* 5000 line history at 80 columns consumes about */
|
|
Packit |
15a96c |
/* 800 kilobytes including chars and attrs bytes! */
|
|
Packit |
15a96c |
if (atoi(P_HISTSIZE) <= 0)
|
|
Packit |
15a96c |
strcpy(P_HISTSIZE,"0");
|
|
Packit |
15a96c |
else if (atoi(P_HISTSIZE) >= 5000)
|
|
Packit |
15a96c |
strcpy(P_HISTSIZE,"5000");
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (history_buffer_size) + 1, 10);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", P_HISTSIZE);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'L': /* fmg - get local macros storage file */
|
|
Packit |
15a96c |
pgets(w, mbslen (macros_file) + 1, 11, P_MACROS, 64, 64, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* Try to open the file to read it in. */
|
|
Packit |
15a96c |
fp = fopen(pfix_home(P_MACROS), "r+");
|
|
Packit |
15a96c |
if (fp == NULL) {
|
|
Packit |
15a96c |
if (errno == EPERM) {
|
|
Packit |
15a96c |
/* Permission denied, hacker! */
|
|
Packit |
15a96c |
werror(_("ERROR: you do not have permission to create a file there!"));
|
|
Packit |
15a96c |
once = 'J'; /* fmg - re-enter it! */
|
|
Packit |
15a96c |
continue;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
if (errno != ENOENT) {
|
|
Packit |
15a96c |
/* File does exist, but cannot be opened. */
|
|
Packit |
15a96c |
werror(_("ERROR: cannot open macro file %s"),
|
|
Packit |
15a96c |
pfix_home(P_MACROS));
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
continue;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
/* Read macros from the file. */
|
|
Packit |
15a96c |
werror(_("Reading macros"));
|
|
Packit |
15a96c |
readmacs(fp, 0);
|
|
Packit |
15a96c |
fclose(fp);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'M': /* fmg - Bring up macro editing window */
|
|
Packit |
15a96c |
domacros();
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'N':
|
|
Packit |
15a96c |
psets(P_MACENAB, yesno(P_MACENAB[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (macros_enabled) + 1, 13);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s", _(P_MACENAB));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'O': /* Character conversions - jl / 04.09.97 */
|
|
Packit |
15a96c |
doconv();
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (character_conversion) + 1, 14);
|
|
Packit |
15a96c |
mc_wprintf(w, "%-16.16s", _(P_CONVF));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'P':
|
|
Packit |
15a96c |
psets(P_ADDLINEFEED, yesno(P_ADDLINEFEED[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (add_linefeed) + 1, 15);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s", _(P_ADDLINEFEED));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'Q':
|
|
Packit |
15a96c |
psets(P_LOCALECHO, yesno(P_LOCALECHO[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (local_echo_str) + 1, 16);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s", _(P_LOCALECHO));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'R':
|
|
Packit |
15a96c |
psets(P_LINEWRAP, yesno(P_LINEWRAP[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (line_wrap) + 1, 17);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s", _(P_LINEWRAP));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'S':
|
|
Packit |
15a96c |
psets(P_DISPLAYHEX, yesno(P_DISPLAYHEX[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(display_hex_str) + 1, 18);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s", _(P_DISPLAYHEX));
|
|
Packit |
15a96c |
display_hex = strcasecmp(P_DISPLAYHEX, "yes") == 0;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'T':
|
|
Packit |
15a96c |
psets(P_ADDCARRIAGERETURN, yesno(P_ADDCARRIAGERETURN[0] == 'N'));
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (add_carriagereturn) + 1, 19);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s", _(P_ADDCARRIAGERETURN));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* This is the 'T' menu - terminal parameters. Does NOT set the new
|
|
Packit |
15a96c |
* terminal type, but returns it to the calling functions that has
|
|
Packit |
15a96c |
* to call init_emul itself.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
int dotermmenu(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
WIN *w;
|
|
Packit |
15a96c |
int c;
|
|
Packit |
15a96c |
int new_term = -1;
|
|
Packit |
15a96c |
int old_stat = P_STATLINE[0];
|
|
Packit |
15a96c |
char buf[8];
|
|
Packit |
15a96c |
char *terminal_emulation = _(" A - Terminal emulation :");
|
|
Packit |
15a96c |
char *backspace_key_sends = _(" B - Backspace key sends :");
|
|
Packit |
15a96c |
char *status_line = _(" C - Status line is :");
|
|
Packit |
15a96c |
char *msg_nl_delay = _(" D - Newline tx delay (ms) :");
|
|
Packit |
15a96c |
char *msg_answerback = _(" E - ENQ answerback :");
|
|
Packit |
15a96c |
char *msg_ch_delay = _(" F - Character tx delay (ms) :");
|
|
Packit |
15a96c |
char *question = _("Change which setting?");
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
w = mc_wopen(15, 7, 64, 15, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
mc_wtitle(w, TMID, _("Terminal settings"));
|
|
Packit |
15a96c |
mc_wprintf(w, "\n");
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", terminal_emulation, terminal == VT100 ? "VT102" : "ANSI");
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", backspace_key_sends, P_BACKSPACE);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", status_line, _(P_STATLINE));
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %d\n", msg_nl_delay, vt_nl_delay);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %s\n", msg_answerback, P_ANSWERBACK);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s %d\n", msg_ch_delay, vt_ch_delay);
|
|
Packit |
15a96c |
mc_wlocate(w, 4, 7);
|
|
Packit |
15a96c |
mc_wputs(w, question);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wredraw(w, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
while (1) {
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (question) + 5, 7);
|
|
Packit |
15a96c |
c = rwxgetch();
|
|
Packit |
15a96c |
switch(c) {
|
|
Packit |
15a96c |
case '\n':
|
|
Packit |
15a96c |
mc_wclose(w, 1);
|
|
Packit |
15a96c |
/* If status line enabled/disabled resize screen. */
|
|
Packit |
15a96c |
if (P_STATLINE[0] != old_stat && new_term < 0)
|
|
Packit |
15a96c |
init_emul(terminal, 0);
|
|
Packit |
15a96c |
return new_term;
|
|
Packit |
15a96c |
case 'A':
|
|
Packit |
15a96c |
if (new_term < 0)
|
|
Packit |
15a96c |
new_term = terminal;
|
|
Packit |
15a96c |
if (new_term == VT100) {
|
|
Packit |
15a96c |
new_term = ANSI;
|
|
Packit |
15a96c |
psets(P_BACKSPACE, "BS");
|
|
Packit |
15a96c |
} else {
|
|
Packit |
15a96c |
new_term = VT100;
|
|
Packit |
15a96c |
psets(P_BACKSPACE, "DEL");
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (terminal_emulation) + 1, 1);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", new_term == VT100 ? "VT102" : "ANSI");
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (backspace_key_sends) + 1, 2);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", P_BACKSPACE);
|
|
Packit |
15a96c |
keyboard(KSETBS, P_BACKSPACE[0] == 'B' ? 8 : 127);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'B':
|
|
Packit |
15a96c |
if (P_BACKSPACE[0] == 'D')
|
|
Packit |
15a96c |
psets(P_BACKSPACE, "BS");
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
psets(P_BACKSPACE, "DEL");
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (backspace_key_sends) + 1, 2);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", P_BACKSPACE);
|
|
Packit |
15a96c |
keyboard(KSETBS, P_BACKSPACE[0] == 'B' ? 8 : 127);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'C':
|
|
Packit |
15a96c |
if (P_STATLINE[0] == 'e') {
|
|
Packit |
15a96c |
psets(P_STATLINE, N_("disabled"));
|
|
Packit |
15a96c |
tempst = 1;
|
|
Packit |
15a96c |
} else {
|
|
Packit |
15a96c |
psets(P_STATLINE, N_("enabled"));
|
|
Packit |
15a96c |
/* See if it fits on screen */
|
|
Packit |
15a96c |
if (LINES > 24 || use_status)
|
|
Packit |
15a96c |
tempst = 0;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (status_line) + 1, 3);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", _(P_STATLINE));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'D':
|
|
Packit |
15a96c |
sprintf(buf, "%d", vt_nl_delay);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(msg_nl_delay) + 1, 4);
|
|
Packit |
15a96c |
mc_wgets(w, buf, 5, 5);
|
|
Packit |
15a96c |
vt_nl_delay = atoi(buf);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(msg_nl_delay) + 1, 4);
|
|
Packit |
15a96c |
mc_wprintf(w, "%-4d", vt_nl_delay);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'E':
|
|
Packit |
15a96c |
pgets(w, strlen(msg_answerback) + 1, 5, P_ANSWERBACK, 50, 50, 0);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'F':
|
|
Packit |
15a96c |
sprintf(buf, "%d", vt_ch_delay);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(msg_ch_delay) + 1, 6);
|
|
Packit |
15a96c |
mc_wgets(w, buf, 5, 5);
|
|
Packit |
15a96c |
vt_ch_delay = atoi(buf);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(msg_ch_delay) + 1, 6);
|
|
Packit |
15a96c |
mc_wprintf(w, "%-4d", vt_ch_delay);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
default:
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Save the configuration.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
void vdodflsave(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
dodflsave();
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Save the configuration.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
int dodflsave(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
FILE *fp;
|
|
Packit |
15a96c |
char *fname = dosetup ? parfile : pparfile;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if ((fp = fopen(fname, "w")) == NULL) {
|
|
Packit |
15a96c |
werror(_("Cannot write to %s"), fname);
|
|
Packit |
15a96c |
return -1;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
writepars(fp, dosetup);
|
|
Packit |
15a96c |
fclose(fp);
|
|
Packit |
15a96c |
if (dosetup)
|
|
Packit |
15a96c |
chmod(fname, (mode_t) 0644);
|
|
Packit |
15a96c |
werror(_("Configuration saved"));
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
return domacsave() < 0 ? -1 : 0;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Save the macros. (fmg)
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
int domacsave(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
FILE *fp;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* fmg - do some basic silly-mortal checks and allow for recovery */
|
|
Packit |
15a96c |
if (!strcmp(P_MACCHG,"CHANGED")) {
|
|
Packit |
15a96c |
if (strlen(P_MACROS) == 0) { /* fmg - they might want to know... */
|
|
Packit |
15a96c |
werror(_("ERROR: Macros have changed but no filename is set!"));
|
|
Packit |
15a96c |
return -1;
|
|
Packit |
15a96c |
} else {
|
|
Packit |
15a96c |
if ((fp = fopen(pfix_home(P_MACROS), "w")) == (FILE *)NULL) {
|
|
Packit |
15a96c |
werror(_("Cannot write macros file %s"),
|
|
Packit |
15a96c |
pfix_home(P_MACROS));
|
|
Packit |
15a96c |
return -1;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
writemacs(fp);
|
|
Packit |
15a96c |
fclose(fp);
|
|
Packit |
15a96c |
werror(_("Macros saved"));
|
|
Packit |
15a96c |
strcpy(P_MACCHG,"SAVED"); /* fmg - reset after save */
|
|
Packit |
15a96c |
return 0;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
return 0;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Save the configuration, ask a name for it.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
static void donamsave(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
char ifile[128];
|
|
Packit |
15a96c |
char *s;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
ifile[0] = 0;
|
|
Packit |
15a96c |
s = input(_("Give name to save this configuration?"), ifile);
|
|
Packit |
15a96c |
if (s != (char *)0 && *s != 0) {
|
|
Packit |
15a96c |
snprintf(parfile, sizeof(parfile), "%s/minirc.%s", CONFDIR, s);
|
|
Packit |
15a96c |
dodflsave();
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
static void (*funcs1[])(void) = {
|
|
Packit |
15a96c |
dopath,
|
|
Packit |
15a96c |
doproto,
|
|
Packit |
15a96c |
doserial,
|
|
Packit |
15a96c |
domodem,
|
|
Packit |
15a96c |
doscrkeyb,
|
|
Packit |
15a96c |
vdodflsave,
|
|
Packit |
15a96c |
donamsave,
|
|
Packit |
15a96c |
NULL,
|
|
Packit |
15a96c |
NULL
|
|
Packit |
15a96c |
};
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
char some_string[64];
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
static char const *menu1[] = {
|
|
Packit |
15a96c |
N_("Filenames and paths"),
|
|
Packit |
15a96c |
N_("File transfer protocols"),
|
|
Packit |
15a96c |
N_("Serial port setup"),
|
|
Packit |
15a96c |
N_("Modem and dialing"),
|
|
Packit |
15a96c |
N_("Screen and keyboard"),
|
|
Packit |
15a96c |
some_string,
|
|
Packit |
15a96c |
N_("Save setup as.."),
|
|
Packit |
15a96c |
N_("Exit"),
|
|
Packit |
15a96c |
N_("Exit from Minicom"),
|
|
Packit |
15a96c |
NULL,
|
|
Packit |
15a96c |
};
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
int config(int setup)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
int c;
|
|
Packit |
15a96c |
char *s;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* Find out extension of parameter file */
|
|
Packit |
15a96c |
s = parfile + strlen(CONFDIR) + 8;
|
|
Packit |
15a96c |
snprintf(some_string, sizeof(some_string), _("Save setup as %s"), s);
|
|
Packit |
15a96c |
some_string[sizeof(some_string) - 1] = 0;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if (!setup)
|
|
Packit |
15a96c |
menu1[8] = NULL;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
c = mc_wselect(13, 10, menu1, funcs1, _("configuration"), stdattr, mfcolor, mbcolor);
|
|
Packit |
15a96c |
if (c == 9)
|
|
Packit |
15a96c |
return 1;
|
|
Packit |
15a96c |
return 0;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* fmg 1/11/94 Color names for menu */
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
const char *J_col[] =
|
|
Packit |
15a96c |
{ N_("BLACK"), N_("RED"), N_("GREEN"), N_("YELLOW"),
|
|
Packit |
15a96c |
N_("BLUE"), N_("MAGENTA"), N_("CYAN"), N_("WHITE") };
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
static const unsigned int speeds[] =
|
|
Packit |
15a96c |
{ 300, 1200, 2400, 4800, 9600,
|
|
Packit |
15a96c |
19200, 38400, 57600, 115200, 230400,
|
|
Packit |
15a96c |
460800, 500000, 576000, 921600, 1000000,
|
|
Packit |
15a96c |
1152000, 1500000, 2000000, 2500000, 3000000,
|
|
Packit |
15a96c |
3500000, 4000000
|
|
Packit |
15a96c |
};
|
|
Packit |
15a96c |
#define NR_SPEEDS (sizeof(speeds) / sizeof(speeds[0]))
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
int speed_valid(unsigned int speed)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
unsigned i;
|
|
Packit |
15a96c |
for (i = 0; i < NR_SPEEDS; ++i)
|
|
Packit |
15a96c |
if (speed == speeds[i])
|
|
Packit |
15a96c |
return 1;
|
|
Packit |
15a96c |
return 0;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* Ask user for Baudrate, Bits and Parity
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
void get_bbp(char *ba, char *bi, char *pa, char *stopb, int curr_ok)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
int c;
|
|
Packit |
15a96c |
WIN *w;
|
|
Packit |
15a96c |
int x, y;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
w = mc_wopen(23, 4, 58, 18, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
mc_wtitle(w, TMID, _("Comm Parameters"));
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
dirflush = 0;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 3);
|
|
Packit |
15a96c |
mc_wputs(w, _(" Speed Parity Data\n"));
|
|
Packit |
15a96c |
mc_wputs(w, _(" A: <next> L: None S: 5\n"));
|
|
Packit |
15a96c |
mc_wputs(w, _(" B: <prev> M: Even T: 6\n"));
|
|
Packit |
15a96c |
mc_wputs(w, _(" C: 9600 N: Odd U: 7\n"));
|
|
Packit |
15a96c |
mc_wputs(w, _(" D: 38400 O: Mark V: 8\n"));
|
|
Packit |
15a96c |
mc_wputs(w, _(" E: 115200 P: Space\n"));
|
|
Packit |
15a96c |
mc_wputs(w, "\n");
|
|
Packit |
15a96c |
mc_wputs(w, _(" Stopbits\n"));
|
|
Packit |
15a96c |
mc_wputs(w, _(" W: 1 Q: 8-N-1\n"));
|
|
Packit |
15a96c |
mc_wputs(w, _(" X: 2 R: 7-E-1\n"));
|
|
Packit |
15a96c |
if (curr_ok)
|
|
Packit |
15a96c |
mc_wputs(w, _(" K: Current\n"));
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
mc_wputs(w, "\n");
|
|
Packit |
15a96c |
mc_wputs(w, _("\n Choice, or <Enter> to exit? "));
|
|
Packit |
15a96c |
x = w->curx;
|
|
Packit |
15a96c |
y = w->cury;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wredraw(w, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
while (1) {
|
|
Packit |
15a96c |
mc_wlocate(w, 5, 1);
|
|
Packit |
15a96c |
mc_wprintf(w, _("Current: %5s %s%s%s "), ba, bi, pa, stopb);
|
|
Packit |
15a96c |
mc_wlocate(w, x, y);
|
|
Packit |
15a96c |
mc_wflush();
|
|
Packit |
15a96c |
c = wxgetch();
|
|
Packit |
15a96c |
switch(c) {
|
|
Packit |
15a96c |
case 27:
|
|
Packit |
15a96c |
case '\n':
|
|
Packit |
15a96c |
case '\r':
|
|
Packit |
15a96c |
dirflush = 1;
|
|
Packit |
15a96c |
mc_wclose(w, 1);
|
|
Packit |
15a96c |
return;
|
|
Packit |
15a96c |
default:
|
|
Packit |
15a96c |
update_bbp_from_char(c, ba, bi, pa, stopb, curr_ok);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* Update the baud rate variables using the given character as the menu
|
|
Packit |
15a96c |
* option selected.
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
int update_bbp_from_char(char c, char *ba, char *bi, char *pa, char *stopb,
|
|
Packit |
15a96c |
int curr_ok)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
int characterRecognised = 1;
|
|
Packit |
15a96c |
unsigned i;
|
|
Packit |
15a96c |
int speed_idx = 0; /* Default value is the first value of the speeds array */
|
|
Packit |
15a96c |
int delta = -1;
|
|
Packit |
15a96c |
unsigned max_speed = m_getmaxspd();
|
|
Packit |
15a96c |
char tmps[15];
|
|
Packit |
15a96c |
int update_ba = 0;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* We have strings for the baud rate, find the index in the speeds array */
|
|
Packit |
15a96c |
for (i = 0; !speed_idx && i < NR_SPEEDS; i++) {
|
|
Packit |
15a96c |
snprintf(tmps, sizeof(tmps), "%d", speeds[i]);
|
|
Packit |
15a96c |
tmps[sizeof(tmps) - 1] = 0;
|
|
Packit |
15a96c |
if (!strcmp(tmps, ba))
|
|
Packit |
15a96c |
speed_idx = i;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
bi[1] = 0;
|
|
Packit |
15a96c |
pa[1] = 0;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
switch(c = toupper(c)) {
|
|
Packit |
15a96c |
case 'A':
|
|
Packit |
15a96c |
delta = 1;
|
|
Packit |
15a96c |
case 'B':
|
|
Packit |
15a96c |
speed_idx += delta;
|
|
Packit |
15a96c |
if (speed_idx < 0)
|
|
Packit |
15a96c |
speed_idx = NR_SPEEDS - 1;
|
|
Packit |
15a96c |
else if (speed_idx > (int)NR_SPEEDS - 1
|
|
Packit |
15a96c |
|| max_speed < speeds[speed_idx])
|
|
Packit |
15a96c |
speed_idx = 0;
|
|
Packit |
15a96c |
case 'C':
|
|
Packit |
15a96c |
case 'D':
|
|
Packit |
15a96c |
case 'E':
|
|
Packit |
15a96c |
if (c == 'C')
|
|
Packit |
15a96c |
speed_idx = 4;
|
|
Packit |
15a96c |
else if (c == 'D')
|
|
Packit |
15a96c |
speed_idx = 6;
|
|
Packit |
15a96c |
else if (c == 'E')
|
|
Packit |
15a96c |
speed_idx = 8;
|
|
Packit |
15a96c |
case 'K':
|
|
Packit |
15a96c |
if (c == 'K' && !curr_ok)
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
update_ba = 1;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
case 'L':
|
|
Packit |
15a96c |
pa[0] = 'N';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'M':
|
|
Packit |
15a96c |
pa[0] = 'E';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'N':
|
|
Packit |
15a96c |
pa[0] = 'O';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'O':
|
|
Packit |
15a96c |
pa[0] = 'M';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'P':
|
|
Packit |
15a96c |
pa[0] = 'S';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'Q':
|
|
Packit |
15a96c |
pa[0] = 'N';
|
|
Packit |
15a96c |
bi[0] = '8';
|
|
Packit |
15a96c |
stopb[0] = '1';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'R':
|
|
Packit |
15a96c |
pa[0] = 'E';
|
|
Packit |
15a96c |
bi[0] = '7';
|
|
Packit |
15a96c |
stopb[0] = '1';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'S':
|
|
Packit |
15a96c |
bi[0] = '5';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'T':
|
|
Packit |
15a96c |
bi[0] = '6';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'U':
|
|
Packit |
15a96c |
bi[0] = '7';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'V':
|
|
Packit |
15a96c |
bi[0] = '8';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'W':
|
|
Packit |
15a96c |
stopb[0] = '1';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'X':
|
|
Packit |
15a96c |
stopb[0] = '2';
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
default:
|
|
Packit |
15a96c |
characterRecognised = 0;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if (update_ba)
|
|
Packit |
15a96c |
sprintf(ba, "%d", speeds[speed_idx]); /* XXX: uff, how long is 'ba' ? */
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
return characterRecognised;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* fmg - part of the Macros menu, "[none]" beats (null) :-)
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
static void out_mac(WIN *w, char *s, char n)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
mc_wprintf(w, " %c : %.67s\n", n, s ? s : "[none]");
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/*
|
|
Packit |
15a96c |
* fmg - Macros editing window
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
void domacros(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
WIN *w;
|
|
Packit |
15a96c |
int clr = 1;
|
|
Packit |
15a96c |
int Jch = '1', Jm = 0; /* fmg - ok, so I was lazy.. */
|
|
Packit |
15a96c |
char* question = _("Change which setting? (Esc to exit)");
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
w = mc_wopen(3, 6, 75, 24, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
mc_wtitle(w, TMID, _("F1 to F10 Macros"));
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wprintf(w, "\n");
|
|
Packit |
15a96c |
out_mac(w,mmacs[Jm++].value, Jch++);
|
|
Packit |
15a96c |
out_mac(w,mmacs[Jm++].value, Jch++);
|
|
Packit |
15a96c |
out_mac(w,mmacs[Jm++].value, Jch++);
|
|
Packit |
15a96c |
out_mac(w,mmacs[Jm++].value, Jch++);
|
|
Packit |
15a96c |
out_mac(w,mmacs[Jm++].value, Jch++);
|
|
Packit |
15a96c |
out_mac(w,mmacs[Jm++].value, Jch++);
|
|
Packit |
15a96c |
out_mac(w,mmacs[Jm++].value, Jch++);
|
|
Packit |
15a96c |
out_mac(w,mmacs[Jm++].value, Jch++);
|
|
Packit |
15a96c |
out_mac(w,mmacs[Jm++].value, Jch++);
|
|
Packit |
15a96c |
Jch = 'A'; /* fmg - ran out of single digits... */
|
|
Packit |
15a96c |
out_mac(w,mmacs[Jm++].value, Jch++);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wredraw(w, 1);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
while(1) {
|
|
Packit |
15a96c |
mc_wlocate(w, 1, 14);
|
|
Packit |
15a96c |
mc_wputs(w, _(" (LEGEND: ^M = C-M, ^L = C-L, ^G = C-G, ^R = C-R, ^~ = pause 1 second,"));
|
|
Packit |
15a96c |
mc_wlocate(w, 1, 15);
|
|
Packit |
15a96c |
mc_wputs(w, _(" \\u = username, \\p = password, \\\\ = \\, \\e = toggle echo, "));
|
|
Packit |
15a96c |
mc_wlocate(w, 1, 16);
|
|
Packit |
15a96c |
mc_wputs(w, _(" \\l = toggle LF, \\bX1..Xn<sp> = change baud rate. Example: \"\\beq \""));
|
|
Packit |
15a96c |
mc_wlocate(w, 1, 17);
|
|
Packit |
15a96c |
mc_wputs(w, _(" = 115200 8N1. (See the \"Comm Parameters\" menu for valid values of X.))"));
|
|
Packit |
15a96c |
if (clr) {
|
|
Packit |
15a96c |
mc_wlocate(w, 1, 12);
|
|
Packit |
15a96c |
mc_wprintf(w, "%s ", question);
|
|
Packit |
15a96c |
mc_wclreol(w);
|
|
Packit |
15a96c |
clr = 0;
|
|
Packit |
15a96c |
} else
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen (question) + 2, 12);
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
switch (rwxgetch()) {
|
|
Packit |
15a96c |
case '\n':
|
|
Packit |
15a96c |
mc_wclose(w, 1);
|
|
Packit |
15a96c |
return;
|
|
Packit |
15a96c |
case '1':
|
|
Packit |
15a96c |
mgets(w, 5, 1, P_MAC1, 72, MAC_LEN);
|
|
Packit |
15a96c |
strcpy(P_MACCHG,_("CHANGED")); /* fmg - ...I'm ashamed */
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 1);
|
|
Packit |
15a96c |
out_mac(w,P_MAC1, '1');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case '2':
|
|
Packit |
15a96c |
mgets(w, 5, 2, P_MAC2, 72, MAC_LEN);
|
|
Packit |
15a96c |
strcpy(P_MACCHG,"CHANGED"); /* fmg - ... really, I am */
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 2);
|
|
Packit |
15a96c |
out_mac(w,P_MAC2, '2');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case '3':
|
|
Packit |
15a96c |
mgets(w, 5, 3, P_MAC3, 72, MAC_LEN);
|
|
Packit |
15a96c |
strcpy(P_MACCHG,"CHANGED"); /* fmg - ... this is the */
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 3);
|
|
Packit |
15a96c |
out_mac(w,P_MAC3, '3');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case '4':
|
|
Packit |
15a96c |
mgets(w, 5, 4, P_MAC4, 72, MAC_LEN);
|
|
Packit |
15a96c |
strcpy(P_MACCHG,"CHANGED"); /* fmg - ... first entry on */
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 4);
|
|
Packit |
15a96c |
out_mac(w,P_MAC4, '4');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case '5':
|
|
Packit |
15a96c |
mgets(w, 5, 5, P_MAC5, 72, MAC_LEN);
|
|
Packit |
15a96c |
strcpy(P_MACCHG,"CHANGED"); /* fmg - ... my TODO list. */
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 5);
|
|
Packit |
15a96c |
out_mac(w,P_MAC5, '5');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case '6':
|
|
Packit |
15a96c |
mgets(w, 5, 6, P_MAC6, 72, MAC_LEN);
|
|
Packit |
15a96c |
strcpy(P_MACCHG,"CHANGED"); /* fmg - ... and, come to think */
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 6);
|
|
Packit |
15a96c |
out_mac(w,P_MAC6, '6');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case '7':
|
|
Packit |
15a96c |
mgets(w, 5, 7, P_MAC7, 72, MAC_LEN);
|
|
Packit |
15a96c |
strcpy(P_MACCHG,"CHANGED"); /* fmg - ... of it, I no longer */
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 7);
|
|
Packit |
15a96c |
out_mac(w,P_MAC7, '7');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case '8':
|
|
Packit |
15a96c |
mgets(w, 5, 8, P_MAC8, 72, MAC_LEN);
|
|
Packit |
15a96c |
strcpy(P_MACCHG,"CHANGED"); /* fmg - ... even use this... */
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 8);
|
|
Packit |
15a96c |
out_mac(w,P_MAC8, '8');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case '9':
|
|
Packit |
15a96c |
mgets(w, 5, 9, P_MAC9, 72, MAC_LEN);
|
|
Packit |
15a96c |
strcpy(P_MACCHG,"CHANGED"); /* fmg - ... [sigh] */
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 9);
|
|
Packit |
15a96c |
out_mac(w,P_MAC9, '9');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'A':
|
|
Packit |
15a96c |
mgets(w, 5, 10, P_MAC10, 72, MAC_LEN);
|
|
Packit |
15a96c |
strcpy(P_MACCHG,"CHANGED"); /* fmg - ... [sigh] */
|
|
Packit |
15a96c |
mc_wlocate(w, 0, 10);
|
|
Packit |
15a96c |
out_mac(w,P_MAC10, 'A');
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* is this *REALLY* a printable or non-printable character?
|
|
Packit |
15a96c |
* the isprint() function seems to consider all chars > 127d non-printable..
|
|
Packit |
15a96c |
* jl 10.03.1998
|
|
Packit |
15a96c |
*/
|
|
Packit |
15a96c |
int prch(int c)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
if (c < 32 || c == 127 || c == 155)
|
|
Packit |
15a96c |
return (' ');
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
return (c);
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
/* Edit the character conversion tables. jl 04.09.97 */
|
|
Packit |
15a96c |
void doconv(void)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
WIN *w;
|
|
Packit |
15a96c |
int i, j, k, l, h,
|
|
Packit |
15a96c |
offs = 32,
|
|
Packit |
15a96c |
ymax = 22,
|
|
Packit |
15a96c |
redraw = 1;
|
|
Packit |
15a96c |
char buf[64];
|
|
Packit |
15a96c |
char *prompt;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
h = 16;
|
|
Packit |
15a96c |
w = mc_wopen (1, 1, 77, ymax, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
|
|
Packit |
15a96c |
mc_wtitle(w, TMID, _("Character conversion"));
|
|
Packit |
15a96c |
while (1) {
|
|
Packit |
15a96c |
if (redraw) {
|
|
Packit |
15a96c |
mc_winclr(w);
|
|
Packit |
15a96c |
mc_wprintf(w,
|
|
Packit |
15a96c |
_(" char in out char in out char in out char in out\n"));
|
|
Packit |
15a96c |
for (i = offs, j = i+h, k = j+h, l = k+h;
|
|
Packit |
15a96c |
i < offs+h && i < 256;
|
|
Packit |
15a96c |
i++, j++, k++, l++) {
|
|
Packit |
15a96c |
mc_wprintf(w, "%3d (%c) %3d %3d ",
|
|
Packit |
15a96c |
i, prch(i), (int) vt_inmap[i], (int) vt_outmap[i]);
|
|
Packit |
15a96c |
if (j < 256)
|
|
Packit |
15a96c |
mc_wprintf(w, "%3d (%c) %3d %3d ",
|
|
Packit |
15a96c |
j, prch(j), (int) vt_inmap[j], (int) vt_outmap[j]);
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
mc_wprintf(w, " ");
|
|
Packit |
15a96c |
if (k < 256)
|
|
Packit |
15a96c |
mc_wprintf(w, "%3d (%c) %3d %3d ",
|
|
Packit |
15a96c |
k, prch(k), (int) vt_inmap[k], (int) vt_outmap[k]);
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
mc_wprintf(w, " ");
|
|
Packit |
15a96c |
if (l < 256)
|
|
Packit |
15a96c |
mc_wprintf(w, "%3d (%c) %3d %3d\n",
|
|
Packit |
15a96c |
l, prch(l), (int) vt_inmap[l], (int) vt_outmap[l]);
|
|
Packit |
15a96c |
else
|
|
Packit |
15a96c |
mc_wprintf(w, " \n");
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
mc_wprintf(w, _("\n A - load table\tB - save table"));
|
|
Packit |
15a96c |
if (P_CONVF[0])
|
|
Packit |
15a96c |
mc_wprintf(w, _("\tfile:%s"),P_CONVF);
|
|
Packit |
15a96c |
mc_wprintf(w, _("\n C - edit char\tD - next screen\tE - prev screen\n"));
|
|
Packit |
15a96c |
mc_wprintf(w, _(" F - convert capture: %s\n"), _(P_CONVCAP));
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wredraw(w, 1);
|
|
Packit |
15a96c |
redraw = 0;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
mc_wlocate(w, 1, ymax - 1);
|
|
Packit |
15a96c |
mc_wclreol(w);
|
|
Packit |
15a96c |
mc_wflush();
|
|
Packit |
15a96c |
switch (toupper(rwxgetch())) {
|
|
Packit |
15a96c |
case '\n':
|
|
Packit |
15a96c |
mc_wclose(w, 1); return;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'A':
|
|
Packit |
15a96c |
strcpy(buf,P_CONVF);
|
|
Packit |
15a96c |
prompt=_("Load file: %s");
|
|
Packit |
15a96c |
mc_wprintf(w, prompt, buf);
|
|
Packit |
15a96c |
pgets(w, mbslen(prompt) - 1, ymax - 1, P_CONVF, 64, 64, 1);
|
|
Packit |
15a96c |
if (loadconv(P_CONVF) == 0) {
|
|
Packit |
15a96c |
if (strcmp(P_CONVF,buf))
|
|
Packit |
15a96c |
markch(P_CONVF);
|
|
Packit |
15a96c |
redraw = 1;
|
|
Packit |
15a96c |
} else
|
|
Packit |
15a96c |
strcpy(P_CONVF,buf);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'B':
|
|
Packit |
15a96c |
strcpy(buf,P_CONVF);
|
|
Packit |
15a96c |
prompt=_("Save as file: %s");
|
|
Packit |
15a96c |
mc_wprintf(w, prompt, buf);
|
|
Packit |
15a96c |
pgets(w, mbslen(prompt) - 1, ymax - 1, P_CONVF, 64, 64, 1);
|
|
Packit |
15a96c |
if (saveconv(P_CONVF) == 0) {
|
|
Packit |
15a96c |
if (strcmp(P_CONVF,buf))
|
|
Packit |
15a96c |
markch(P_CONVF);
|
|
Packit |
15a96c |
redraw = 1;
|
|
Packit |
15a96c |
} else
|
|
Packit |
15a96c |
strcpy(P_CONVF,buf);
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'C':
|
|
Packit |
15a96c |
prompt = _("Character to be edited: ");
|
|
Packit |
15a96c |
mc_wprintf(w, "%s", prompt);
|
|
Packit |
15a96c |
buf[0] = 0;
|
|
Packit |
15a96c |
i = -1;
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(prompt), ymax - 1);
|
|
Packit |
15a96c |
mc_wgets(w, buf, 7, 7);
|
|
Packit |
15a96c |
sscanf(buf, "%d", &i);
|
|
Packit |
15a96c |
if (i > 255 || i < 0) {
|
|
Packit |
15a96c |
werror(_("Input character ascii value 0-255"));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
sprintf(buf, "%u",(unsigned int) vt_inmap[i]);
|
|
Packit |
15a96c |
mc_wlocate(w, 30, ymax - 1);
|
|
Packit |
15a96c |
prompt=_("Change input to: %s");
|
|
Packit |
15a96c |
mc_wprintf(w, prompt,buf);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(prompt) + 28, ymax - 1);
|
|
Packit |
15a96c |
mc_wgets(w, buf, 7, 7);
|
|
Packit |
15a96c |
sscanf(buf, "%d", &j);
|
|
Packit |
15a96c |
if (j > 255 || j < 0) {
|
|
Packit |
15a96c |
werror(_("Input character ascii value 0-255"));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
else vt_inmap[i] = j;
|
|
Packit |
15a96c |
sprintf(buf, "%u",(unsigned int) vt_outmap[i]);
|
|
Packit |
15a96c |
mc_wlocate(w, 54, ymax - 1);
|
|
Packit |
15a96c |
prompt = _("Change output to: %s");
|
|
Packit |
15a96c |
mc_wprintf(w, prompt, buf);
|
|
Packit |
15a96c |
mc_wlocate(w, mbslen(prompt) + 52, ymax - 1);
|
|
Packit |
15a96c |
mc_wgets(w, buf, 7, 7);
|
|
Packit |
15a96c |
sscanf(buf, "%d", &j);
|
|
Packit |
15a96c |
if (j > 255 || j < 0) {
|
|
Packit |
15a96c |
werror(_("Input character ascii value 0-255"));
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
else vt_outmap[i] = j;
|
|
Packit |
15a96c |
redraw = 1;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'D':
|
|
Packit |
15a96c |
offs += 4 * h;
|
|
Packit |
15a96c |
if (offs > 255)
|
|
Packit |
15a96c |
offs = 0;
|
|
Packit |
15a96c |
redraw = 1;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'E':
|
|
Packit |
15a96c |
offs -= 4 * h;
|
|
Packit |
15a96c |
if (offs < 0)
|
|
Packit |
15a96c |
offs = 0;
|
|
Packit |
15a96c |
redraw = 1;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
case 'F':
|
|
Packit |
15a96c |
strcpy(P_CONVCAP, yesno(P_CONVCAP[0] == 'N'));
|
|
Packit |
15a96c |
markch(P_CONVCAP);
|
|
Packit |
15a96c |
redraw = 1;
|
|
Packit |
15a96c |
break;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
int loadconv(char *buf)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
FILE *fp;
|
|
rpm-build |
f4ee89 |
int err = 0;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if ((fp = fopen(pfix_home(buf), "rb")) == (FILE *)NULL) {
|
|
Packit |
15a96c |
werror(_("Cannot open conversion table %s"), pfix_home(buf));
|
|
Packit |
15a96c |
return 1;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
if ( fread(vt_inmap, sizeof(vt_inmap), (size_t)1, fp) != 1
|
|
Packit |
15a96c |
|| fread(vt_outmap, sizeof(vt_outmap), (size_t)1, fp) != 1)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
werror(_("Cannot read conversion table %s"), pfix_home(buf));
|
|
rpm-build |
f4ee89 |
err = 1;
|
|
Packit |
15a96c |
}
|
|
rpm-build |
f4ee89 |
|
|
Packit |
15a96c |
fclose(fp);
|
|
rpm-build |
f4ee89 |
return err;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
int saveconv(char *buf)
|
|
Packit |
15a96c |
{
|
|
Packit |
15a96c |
FILE *fp;
|
|
Packit |
15a96c |
|
|
Packit |
15a96c |
if ((fp = fopen(pfix_home(buf), "wb")) == (FILE *)NULL) {
|
|
Packit |
15a96c |
werror(_("Cannot write conversion table %s"), pfix_home(buf));
|
|
Packit |
15a96c |
return 1;
|
|
Packit |
15a96c |
}
|
|
Packit |
15a96c |
fwrite(vt_inmap, sizeof(vt_inmap), (size_t)1, fp);
|
|
Packit |
15a96c |
fwrite(vt_outmap, sizeof(vt_outmap), (size_t)1, fp);
|
|
Packit |
15a96c |
fclose(fp);
|
|
Packit |
15a96c |
return 0;
|
|
Packit |
15a96c |
}
|