Changeset View
Changeset View
Standalone View
Standalone View
head/libexec/getty/chat.c
Show First 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | |||||
static volatile int alarmed = 0; | static volatile int alarmed = 0; | ||||
static void chat_alrm(int); | static void chat_alrm(int); | ||||
static int chat_unalarm(void); | static int chat_unalarm(void); | ||||
static int getdigit(unsigned char **, int, int); | static int getdigit(unsigned char **, int, int); | ||||
static char **read_chat(char **); | static char **read_chat(char **); | ||||
static char *cleanchr(char **, unsigned char); | static char *cleanchr(char **, unsigned char); | ||||
static char *cleanstr(const unsigned char *, int); | static const char *cleanstr(const unsigned char *, int); | ||||
static const char *result(int); | static const char *result(int); | ||||
static int chat_expect(const char *); | static int chat_expect(const char *); | ||||
static int chat_send(char const *); | static int chat_send(char const *); | ||||
/* | /* | ||||
* alarm signal handler | * alarm signal handler | ||||
* handle timeouts in read/write | * handle timeouts in read/write | ||||
▲ Show 20 Lines • Show All 191 Lines • ▼ Show 20 Lines | cleanchr(char **buf, unsigned char ch) | ||||
return tmp; | return tmp; | ||||
} | } | ||||
/* | /* | ||||
* clean a string for display (ctrl/meta characters) | * clean a string for display (ctrl/meta characters) | ||||
*/ | */ | ||||
static char * | static const char * | ||||
cleanstr(const unsigned char *s, int l) | cleanstr(const unsigned char *s, int l) | ||||
{ | { | ||||
static unsigned char * tmp = NULL; | static unsigned char * tmp = NULL; | ||||
static int tmplen = 0; | static int tmplen = 0; | ||||
if (tmplen < l * 4 + 1) | if (tmplen < l * 4 + 1) | ||||
tmp = realloc(tmp, tmplen = l * 4 + 1); | tmp = realloc(tmp, tmplen = l * 4 + 1); | ||||
if (tmp == NULL) { | if (tmp == NULL) { | ||||
tmplen = 0; | tmplen = 0; | ||||
return (char *)"(mem alloc error)"; | return "(mem alloc error)"; | ||||
} else { | } else { | ||||
int i = 0; | int i = 0; | ||||
char * p = tmp; | char * p = tmp; | ||||
while (i < l) | while (i < l) | ||||
cleanchr(&p, s[i++]); | cleanchr(&p, s[i++]); | ||||
*p = '\0'; | *p = '\0'; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 196 Lines • Show Last 20 Lines |