include/ttyutils: add default chardata
this one moves the init_chardata to include/ttyutils.h as well as to lib/include/ttyutils.c. Also the macros CTL/CTRL are fixed in agetty.c and sulogin.c to use the XOR variant CTL. [kzak@redhat.com: use macro rather than global variable for default chardata] Signed-off-by: Werner Fink <werner@suse.de> Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
0f23ee0c85
commit
f5664477cb
|
@ -14,6 +14,22 @@
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Some shorthands for control characters. */
|
||||||
|
#define CTL(x) ((x) ^ 0100) /* Assumes ASCII dialect */
|
||||||
|
#define CR CTL('M') /* carriage return */
|
||||||
|
#define NL CTL('J') /* line feed */
|
||||||
|
#define BS CTL('H') /* back space */
|
||||||
|
#define DEL CTL('?') /* delete */
|
||||||
|
|
||||||
|
/* Defaults for line-editing etc. characters; you may want to change these. */
|
||||||
|
#define DEF_ERASE DEL /* default erase character */
|
||||||
|
#define DEF_INTR CTL('C') /* default interrupt character */
|
||||||
|
#define DEF_QUIT CTL('\\') /* default quit char */
|
||||||
|
#define DEF_KILL CTL('U') /* default kill char */
|
||||||
|
#define DEF_EOF CTL('D') /* default EOF char */
|
||||||
|
#define DEF_EOL 0
|
||||||
|
#define DEF_SWITCH 0 /* default switch char */
|
||||||
|
|
||||||
/* Storage for things detected while the login name was read. */
|
/* Storage for things detected while the login name was read. */
|
||||||
struct chardata {
|
struct chardata {
|
||||||
int erase; /* erase character */
|
int erase; /* erase character */
|
||||||
|
@ -23,6 +39,14 @@ struct chardata {
|
||||||
int capslock; /* upper case without lower case */
|
int capslock; /* upper case without lower case */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define INIT_CHARDATA(ptr) do { \
|
||||||
|
(ptr)->erase = DEF_ERASE; \
|
||||||
|
(ptr)->kill = DEF_KILL; \
|
||||||
|
(ptr)->eol = CTRL('r'); \
|
||||||
|
(ptr)->parity = 0; \
|
||||||
|
(ptr)->capslock = 0; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
extern int get_terminal_width(void);
|
extern int get_terminal_width(void);
|
||||||
extern int get_terminal_name(const char **path, const char **name, const char **number);
|
extern int get_terminal_name(const char **path, const char **name, const char **number);
|
||||||
|
|
||||||
|
|
|
@ -281,12 +281,6 @@ __attribute__((__nonnull__,__hot__))
|
||||||
#endif
|
#endif
|
||||||
int append_console(struct list_head *consoles, const char *name)
|
int append_console(struct list_head *consoles, const char *name)
|
||||||
{
|
{
|
||||||
static const struct chardata initcp = {
|
|
||||||
.erase = CERASE,
|
|
||||||
.kill = CKILL,
|
|
||||||
.eol = CTRL('r'),
|
|
||||||
.parity = 0
|
|
||||||
};
|
|
||||||
struct console *restrict tail;
|
struct console *restrict tail;
|
||||||
struct console *last = NULL;
|
struct console *last = NULL;
|
||||||
|
|
||||||
|
@ -300,6 +294,7 @@ int append_console(struct list_head *consoles, const char *name)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
INIT_LIST_HEAD(&tail->entry);
|
INIT_LIST_HEAD(&tail->entry);
|
||||||
|
INIT_CHARDATA(&tail->cp);
|
||||||
|
|
||||||
list_add_tail(&tail->entry, consoles);
|
list_add_tail(&tail->entry, consoles);
|
||||||
tail->tty = ((char *) tail) + alignof(struct console);
|
tail->tty = ((char *) tail) + alignof(struct console);
|
||||||
|
@ -311,7 +306,6 @@ int append_console(struct list_head *consoles, const char *name)
|
||||||
tail->id = last ? last->id + 1 : 0;
|
tail->id = last ? last->id + 1 : 0;
|
||||||
tail->pid = 0;
|
tail->pid = 0;
|
||||||
memset(&tail->tio, 0, sizeof(tail->tio));
|
memset(&tail->tio, 0, sizeof(tail->tio));
|
||||||
memcpy(&tail->cp, &initcp, sizeof(struct chardata));
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,8 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <list.h>
|
|
||||||
|
|
||||||
|
#include "list.h"
|
||||||
#include "ttyutils.h"
|
#include "ttyutils.h"
|
||||||
|
|
||||||
struct console {
|
struct console {
|
||||||
|
|
|
@ -58,10 +58,6 @@
|
||||||
#include "sulogin-consoles.h"
|
#include "sulogin-consoles.h"
|
||||||
#define CONMAX 16
|
#define CONMAX 16
|
||||||
|
|
||||||
#define BS CTRL('h')
|
|
||||||
#define NL CTRL('j')
|
|
||||||
#define CR CTRL('m')
|
|
||||||
|
|
||||||
static unsigned int timeout;
|
static unsigned int timeout;
|
||||||
static int profile;
|
static int profile;
|
||||||
static volatile uint32_t openfd; /* Remember higher file descriptors */
|
static volatile uint32_t openfd; /* Remember higher file descriptors */
|
||||||
|
|
|
@ -106,22 +106,6 @@
|
||||||
#define LOGIN "login: "
|
#define LOGIN "login: "
|
||||||
#define LOGIN_ARGV_MAX 16 /* Numbers of args for login */
|
#define LOGIN_ARGV_MAX 16 /* Numbers of args for login */
|
||||||
|
|
||||||
/* Some shorthands for control characters. */
|
|
||||||
#define CTL(x) (x ^ 0100) /* Assumes ASCII dialect */
|
|
||||||
#define CR CTL('M') /* carriage return */
|
|
||||||
#define NL CTL('J') /* line feed */
|
|
||||||
#define BS CTL('H') /* back space */
|
|
||||||
#define DEL CTL('?') /* delete */
|
|
||||||
|
|
||||||
/* Defaults for line-editing etc. characters; you may want to change these. */
|
|
||||||
#define DEF_ERASE DEL /* default erase character */
|
|
||||||
#define DEF_INTR CTL('C') /* default interrupt character */
|
|
||||||
#define DEF_QUIT CTL('\\') /* default quit char */
|
|
||||||
#define DEF_KILL CTL('U') /* default kill char */
|
|
||||||
#define DEF_EOF CTL('D') /* default EOF char */
|
|
||||||
#define DEF_EOL 0
|
|
||||||
#define DEF_SWITCH 0 /* default switch char */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When multiple baud rates are specified on the command line, the first one
|
* When multiple baud rates are specified on the command line, the first one
|
||||||
* we will try is the first one specified.
|
* we will try is the first one specified.
|
||||||
|
@ -178,13 +162,6 @@ struct options {
|
||||||
#define serial_tty_option(opt, flag) \
|
#define serial_tty_option(opt, flag) \
|
||||||
(((opt)->flags & (F_VCONSOLE|(flag))) == (flag))
|
(((opt)->flags & (F_VCONSOLE|(flag))) == (flag))
|
||||||
|
|
||||||
/* Initial values for the above. */
|
|
||||||
static const struct chardata init_chardata = {
|
|
||||||
.erase = DEF_ERASE, /* default erase character */
|
|
||||||
.kill = DEF_KILL, /* default kill character */
|
|
||||||
.eol = 13 /* default eol char */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Speedtab {
|
struct Speedtab {
|
||||||
long speed;
|
long speed;
|
||||||
speed_t code;
|
speed_t code;
|
||||||
|
@ -365,7 +342,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
chardata = init_chardata;
|
INIT_CHARDATA(&chardata);
|
||||||
|
|
||||||
if (options.autolog) {
|
if (options.autolog) {
|
||||||
debug("doing auto login\n");
|
debug("doing auto login\n");
|
||||||
|
@ -1404,7 +1381,7 @@ static char *get_logname(struct options *op, struct termios *tp, struct chardata
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Initialize kill, erase, parity etc. (also after switching speeds). */
|
/* Initialize kill, erase, parity etc. (also after switching speeds). */
|
||||||
*cp = init_chardata;
|
INIT_CHARDATA(cp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flush pending input (especially important after parsing or switching
|
* Flush pending input (especially important after parsing or switching
|
||||||
|
|
Loading…
Reference in New Issue