From 1aa62bc29cd021ca14aaeb41e6c94638f517f8e1 Mon Sep 17 00:00:00 2001 From: Michael Jennings Date: Wed, 22 May 2002 20:55:06 +0000 Subject: Wed May 22 16:52:37 2002 Michael Jennings (mej) Cleanups of Escreen stuff. Always use MALLOC/FREE, not malloc/free. SVN revision: 6272 --- ChangeLog | 4 ++ src/command.c | 14 +++--- src/libscream.c | 131 ++++++++++++++++++++++++++------------------------------ src/menus.c | 10 ++--- src/menus.h | 4 +- src/scream.h | 4 +- 6 files changed, 79 insertions(+), 88 deletions(-) diff --git a/ChangeLog b/ChangeLog index e7fecc3..9d5ae12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4671,3 +4671,7 @@ Wed May 22 16:17:24 2002 Michael Jennings (mej) Fixed duplicate freeing of menu background pixmap. ---------------------------------------------------------------------- +Wed May 22 16:52:37 2002 Michael Jennings (mej) + +Cleanups of Escreen stuff. Always use MALLOC/FREE, not malloc/free. +---------------------------------------------------------------------- diff --git a/src/command.c b/src/command.c index 5b1a4a1..d9877ae 100644 --- a/src/command.c +++ b/src/command.c @@ -2472,7 +2472,7 @@ upd_disp(void *xd, int n, int flags, char *name) if (name && (!button->text || strcmp(name, button->text))) { if (button->text) - free(button->text); + FREE(button->text); if (!(button->text = strdup(name))) { button->len = 0; @@ -2509,7 +2509,7 @@ err_msg(void *xd, int err, char *msg) } } if (n >= nsc) { - menu_dial(NULL, msg, 0, NULL, NULL); + menu_dialog(NULL, msg, 0, NULL, NULL); } } return NS_SUCC; @@ -2529,9 +2529,9 @@ inp_text(void *xd, int id, char *txt) /* open a dialog */ int -inp_dial(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (void *, char *, size_t, size_t)) +input_dialog(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (void *, char *, size_t, size_t)) { - switch (menu_dial(xd, prompt, maxlen, retstr, inp_tab)) { + switch (menu_dialog(xd, prompt, maxlen, retstr, inp_tab)) { case 0: return NS_SUCC; case -2: @@ -2633,7 +2633,7 @@ matrix(int n) { int x, y, w, f; int ys = TermWin.saveLines - TermWin.view_start; - text_t *s = malloc(TermWin.ncol); + text_t *s = MALLOC(TermWin.ncol); text_t *t, *t2; rend_t *r, *r2; @@ -2703,7 +2703,7 @@ matrix(int n) } scr_refresh(FAST_REFRESH); } - free(s); + FREE(s); } @@ -2768,7 +2768,7 @@ init_command(char **argv) ns_register_exe(efuns, exe_prg); ns_register_txt(efuns, inp_text); - ns_register_inp(efuns, inp_dial); + ns_register_inp(efuns, input_dialog); ns_register_tab(efuns, menu_tab); ns_register_fun(efuns, waitstate); diff --git a/src/libscream.c b/src/libscream.c index a46a3fc..2a8199d 100644 --- a/src/libscream.c +++ b/src/libscream.c @@ -16,7 +16,8 @@ * 2002/05/18 Azundris remote handling improved (thanks tillsan, tfing) ***************************************************************************/ - +#include "config.h" +#include "src/feature.h" #include /* stderr, fprintf, snprintf() */ #include /* bzero() */ @@ -31,6 +32,8 @@ #include /* isspace() */ #include /* errno */ +#include + #include "scream.h" /* structs, defs, headers */ #include "screamcfg.h" /* user-tunables */ @@ -76,20 +79,6 @@ static _ns_hop *ha = NULL; /* anchor for hop list */ -/* ns_free - free a string (or whatever) */ - -void * -ns_free(char **x) -{ - if (!x || !*x) - return; - free(*x); - *x = NULL; -} - - - /* ns_new_hop. create and initialize a hop struct. lp local port. if 0: if otherwise matching hop exists, reuse that. otherwise, find the first free (as in, not used @@ -125,7 +114,7 @@ ns_new_hop(int lp, char *fw, int fp, int delay, _ns_sess * s) } } - h = malloc(sizeof(_ns_hop)); + h = MALLOC(sizeof(_ns_hop)); if (h) { bzero(h, sizeof(_ns_hop)); if ((h->fw = strdup(fw))) { @@ -154,7 +143,7 @@ ns_new_hop(int lp, char *fw, int fp, int delay, _ns_sess * s) h->sess = s; ha = h; } else { - free(h); + FREE(h); return NULL; } } @@ -185,7 +174,7 @@ ns_dst_hop(_ns_hop ** ss, _ns_sess * sp) if (!--(s->refcount)) { /* was last ref to hop => free hop */ if (s->fw) - free(s->fw); + FREE(s->fw); #ifdef NS_DEBUG_MEM bzero(s, sizeof(_ns_hop)); #endif @@ -198,7 +187,7 @@ ns_dst_hop(_ns_hop ** ss, _ns_sess * sp) if (h) h->next = s->next; } - free(s); + FREE(s); } else if (sp && sp->hop == s) { /* hop shouldn't point back at a session that just dereffed it as it's probably about to die. fix the back ref to a session @@ -223,7 +212,7 @@ ns_dst_hop(_ns_hop ** ss, _ns_sess * sp) _ns_efuns * ns_new_efuns(void) { - _ns_efuns *s = malloc(sizeof(_ns_efuns)); + _ns_efuns *s = MALLOC(sizeof(_ns_efuns)); if (s) { bzero(s, sizeof(_ns_efuns)); } @@ -250,7 +239,7 @@ ns_dst_efuns(_ns_efuns ** ss) #ifdef NS_DEBUG_MEM bzero(s, sizeof(_ns_efuns)); #endif - free(s); + FREE(s); } } return NULL; @@ -261,7 +250,7 @@ ns_dst_efuns(_ns_efuns ** ss) _ns_disp * ns_new_disp(void) { - _ns_disp *s = malloc(sizeof(_ns_disp)); + _ns_disp *s = MALLOC(sizeof(_ns_disp)); if (s) { bzero(s, sizeof(_ns_disp)); } @@ -276,7 +265,7 @@ ns_dst_disp(_ns_disp ** ss) if (ss && *ss) { _ns_disp *s = *ss; if (s->name) - free(s->name); + FREE(s->name); if (s->efuns) ns_dst_efuns(&(s->efuns)); if (s->child) /* nested screen? */ @@ -285,7 +274,7 @@ ns_dst_disp(_ns_disp ** ss) #ifdef NS_DEBUG_MEM bzero(s, sizeof(_ns_disp)); #endif - free(s); + FREE(s); } return NULL; } @@ -310,7 +299,7 @@ ns_dst_dsps(_ns_disp ** ss) _ns_sess * ns_new_sess(void) { - _ns_sess *s = malloc(sizeof(_ns_sess)); + _ns_sess *s = MALLOC(sizeof(_ns_sess)); if (s) { bzero(s, sizeof(_ns_sess)); s->escape = NS_SCREEN_ESCAPE; /* default setup for the screen program */ @@ -337,11 +326,11 @@ ns_dst_sess(_ns_sess ** ss) if (s->hop) ns_dst_hop(&(s->hop), s); if (s->host) - free(s->host); + FREE(s->host); if (s->user) - free(s->user); + FREE(s->user); if (s->pass) - free(s->pass); + FREE(s->pass); if (s->efuns) ns_dst_efuns(&(s->efuns)); if (s->prvs) @@ -354,7 +343,7 @@ ns_dst_sess(_ns_sess ** ss) #ifdef NS_DEBUG_MEM bzero(s, sizeof(_ns_sess)); #endif - free(s); + FREE(s); } return NULL; } @@ -399,7 +388,7 @@ ns_screen_command(_ns_sess * sess, char *cmd) ns_desc_string(c, "ns_screen_command: xlated string"); #endif efuns->inp_text(NULL, sess->fd, c); - free(c); + FREE(c); } else { /* out of memory */ ret = NS_OOM; @@ -423,7 +412,7 @@ ns_screen_xcommand(_ns_sess * s, char prefix, char *cmd) { char *i; int ret = NS_OOM; - if ((i = malloc(strlen(cmd) + 4))) { + if ((i = MALLOC(strlen(cmd) + 4))) { size_t l = strlen(cmd) + 2; strcpy(&i[2], cmd); i[0] = s->escape; @@ -431,7 +420,7 @@ ns_screen_xcommand(_ns_sess * s, char prefix, char *cmd) i[l] = '\n'; i[++l] = '\0'; ret = ns_screen_command(s, i); - free(i); + FREE(i); } return ret; } @@ -503,7 +492,7 @@ ns_upd_stat(_ns_sess * s) -/* ns_inp_dial +/* ns_input_dialog open a dialog s the session !retstr where we'll store a pointer to the result (the user's input) @@ -512,17 +501,17 @@ ns_upd_stat(_ns_sess * s) int -ns_inp_dial(_ns_sess * s, char *prompt, int maxlen, char **retstr, int (*inp_tab) (void *, char *, size_t, size_t)) +ns_input_dialog(_ns_sess * s, char *prompt, int maxlen, char **retstr, int (*inp_tab) (void *, char *, size_t, size_t)) { _ns_efuns *efuns; char *c; int ret = NS_SUCC; - if (NS_EFUN_EXISTS(efuns, s, NULL, inp_dial)) { - (void) efuns->inp_dial((void *) s, prompt, maxlen, retstr, inp_tab); + if (NS_EFUN_EXISTS(efuns, s, NULL, input_dialog)) { + (void) efuns->input_dialog((void *) s, prompt, maxlen, retstr, inp_tab); } else { ret = NS_EFUN_NOT_SET; - fprintf(stderr, NS_PREFIX "ns_screen_command: sess->efuns->inp_dial not set!\n"); + fprintf(stderr, NS_PREFIX "ns_screen_command: sess->efuns->input_dialog not set!\n"); } return ret; } @@ -764,7 +753,7 @@ ns_run(_ns_efuns * efuns, char *cmd) } while (*p); - if (!(args = malloc((n + 2) * sizeof(char *)))) + if (!(args = MALLOC((n + 2) * sizeof(char *)))) goto fail; for (p = cmd, c = 0; c < n; c++) { @@ -794,7 +783,7 @@ ns_run(_ns_efuns * efuns, char *cmd) n = efuns->execute(NULL, args); if (args) - free(args); + FREE(args); return n; fail: @@ -817,12 +806,12 @@ ns_make_call_el(char *tmpl, char *dflt, char *opt) if (tmpl && dflt && *tmpl && strstr(tmpl, "%s")) { l = strlen(tmpl) + (opt ? strlen(opt) : strlen(dflt)) - 1L; - if ((p = malloc(l))) { + if ((p = MALLOC(l))) { r = snprintf(p, l, tmpl, opt ? opt : dflt); if ((r >= 0) && (r < l)) { return p; } - free(p); + FREE(p); } } return NULL; @@ -842,20 +831,20 @@ ns_make_call(_ns_sess * sess) tmp = screen = ns_make_call_el(NS_SCREEN_CALL, NS_SCREEN_OPTS, sess->rsrc); if (sess->backend == NS_MODE_NEGOTIATE) { size_t r, l = strlen(NS_SCREEM_CALL) + strlen(scream) + strlen(screen) - 3; - if ((screem = malloc(l))) { + if ((screem = MALLOC(l))) { r = snprintf(screem, l, NS_SCREEM_CALL, scream, screen); #ifdef NS_PARANOID if ((r < 0) || (r > l)) { - ns_free(&screem); + FREE(screem); } #endif } tmp = screem; } call = ns_make_call_el(NS_WRAP_CALL, tmp, NULL); - ns_free(&screen); - ns_free(&scream); - ns_free(&screem); + FREE(screen); + FREE(scream); + FREE(screem); return call; } @@ -879,10 +868,10 @@ ns_attach_lcl(_ns_sess ** sp) if (call = ns_make_call(sess)) { char *c2 = ns_make_call_el("/bin/sh -c \"%s\"", call, NULL); - ns_free(&call); + FREE(call); if (c2) { ret = ns_run(sess->efuns, c2); - ns_free(&c2); + FREE(c2); } } return ret; @@ -926,7 +915,7 @@ ns_attach_ssh(_ns_sess ** sp) snprintf(cmd, NS_MAXCMD, "%s %s -p %d %s@%s \"%s -e^%c%c\"", NS_SSH_CALL, NS_SSH_OPTS, sess->port, sess->user, sess->host, call, sess->escape + 'A' - 1, sess->literal); } - ns_free(&call); + FREE(call); #ifdef NS_DEBUG fprintf(stderr, "\n\n>>%s\n>>%s\n\n", call, cmd); fflush(stderr); @@ -1103,7 +1092,7 @@ ns_attach_by_URL(char *url, char *hop, _ns_efuns ** ef, int *err, void *xd) fprintf(stderr, NS_PREFIX "URL: path for screen's option -c should be absolute (%s)\n", r); if ((rc = strdup(r))) { if (sess->home) /* this should never happen */ - free(sess->home); + FREE(sess->home); #ifdef NS_DEBUG fprintf(stderr, NS_PREFIX "URL: searching for rc in %s\n", rc); #endif @@ -1141,7 +1130,7 @@ ns_attach_by_URL(char *url, char *hop, _ns_efuns ** ef, int *err, void *xd) if (strlen(q) && !(sess->host = strdup(q))) /* host, if any */ goto fail; - free(d); + FREE(d); } sess->where = NS_SSH; @@ -1182,7 +1171,7 @@ ns_attach_by_URL(char *url, char *hop, _ns_efuns ** ef, int *err, void *xd) if (getenv("SCREENRC")) { /* $SCREENRC */ sess->home = strdup(getenv("SCREENRC")); } else if (pwe && !sess->home) { /* ~/.screenrc */ - if ((sess->home = malloc(strlen(pwe->pw_dir) + strlen(NS_SCREEN_RC) + 2))) + if ((sess->home = MALLOC(strlen(pwe->pw_dir) + strlen(NS_SCREEN_RC) + 2))) sprintf(sess->home, "%s/%s", pwe->pw_dir, NS_SCREEN_RC); } else goto fail; @@ -1229,7 +1218,7 @@ ns_attach_by_URL(char *url, char *hop, _ns_efuns ** ef, int *err, void *xd) fail: if (d) - free(d); + FREE(d); return ns_dst_sess(&sess); } @@ -1348,9 +1337,9 @@ ns_register_txt(_ns_efuns * efuns, int (*inp_text) (void *, int, char *)) /* function that will open a dialog */ void -ns_register_inp(_ns_efuns * efuns, int (*inp_dial) (void *, char *, int, char **, int (*)(void *, char *, size_t, size_t))) +ns_register_inp(_ns_efuns * efuns, int (*input_dialog) (void *, char *, int, char **, int (*)(void *, char *, size_t, size_t))) { - efuns->inp_dial = inp_dial; + efuns->input_dialog = input_dialog; } @@ -1759,30 +1748,30 @@ ns_parse_screen_key(_ns_sess * s, char c) switch (c) { case NS_SCREEN_CMD: /* send command (statement) to screen server */ - (void) ns_inp_dial((void *) s, "Enter a command to send to the \"screen\" program", 64, &i, ns_inp_tab); + (void) ns_input_dialog((void *) s, "Enter a command to send to the \"screen\" program", 64, &i, ns_inp_tab); if (i) { if ((ret = ns_parse_screen_cmd(s, i, NS_ESC_INTERACTIVE)) == NS_SUCC) { ret = ns_screen_xcommand(s, c, i); } else if (ret == NS_NOT_ALLOWED) { - menu_dial(NULL, "Sorry, David, I cannot allow that.", 0, NULL, NULL); + menu_dialog(NULL, "Sorry, David, I cannot allow that.", 0, NULL, NULL); } - free(i); + FREE(i); } break; case NS_SCREEN_RENAME: /* rename current display */ i = s->curr->name; l = strlen(i); - (void) ns_inp_dial(s, "Enter a new name for the current display", 12, &i, NULL); + (void) ns_input_dialog(s, "Enter a new name for the current display", 12, &i, NULL); if (i && *i) { char *n; - if ((n = malloc(strlen(i) + l + 1))) { + if ((n = MALLOC(strlen(i) + l + 1))) { strcpy(&n[l], i); while (l) n[--l] = '\x08'; ret = ns_screen_xcommand(s, c, n); - free(n); + FREE(n); } - free(i); + FREE(i); } break; default: @@ -1832,7 +1821,7 @@ ns_parse_screen_interactive(_ns_sess * sess, char *c) (void) ns_screen_command(sess, s); #ifdef NS_PARANOID - free(o); + FREE(o); #endif return NS_SUCC; @@ -1861,7 +1850,7 @@ ns_parse_screenrc(_ns_sess * s, char *fn, int whence) if ((fd = open(fn, 0)) >= 0) { if (!fstat(fd, &st)) { - if ((rc = malloc(st.st_size + 1))) { + if ((rc = MALLOC(st.st_size + 1))) { char *p; while (((rd = read(fd, rc, st.st_size)) < 0) && (errno == EINTR)); if (rd < 0) @@ -1900,7 +1889,7 @@ ns_parse_screenrc(_ns_sess * s, char *fn, int whence) ns_parse_screen_cmd(s, p, whence); p = n; /* done, next line */ } - free(rc); + FREE(rc); close(fd); return NS_SUCC; } @@ -1912,7 +1901,7 @@ ns_parse_screenrc(_ns_sess * s, char *fn, int whence) if (fd >= 0) close(fd); if (rc) - free(rc); + FREE(rc); return NS_FAIL; } @@ -2068,7 +2057,7 @@ ns_parse_screen(_ns_sess * screen, int force, int width, char *p) } (void) ns_screen_command(screen, NS_SCREEN_INIT); } - free(p); + FREE(p); return ret; } @@ -2140,9 +2129,9 @@ ns_parse_screen(_ns_sess * screen, int force, int width, char *p) } else if ((tmp = strcmp(disp->name, pd[r].name)) || /* upd display */ (disp->flags != pd[r].flags)) { if (tmp) { - free(disp->name); + FREE(disp->name); if (!(disp->name = strdup(pd[r].name))) { - free(p); + FREE(p); return NS_FAIL; } } @@ -2189,7 +2178,7 @@ ns_parse_screen(_ns_sess * screen, int force, int width, char *p) "beauty of your desktop is not relevant to this investigation. : ).\n"); } ret = ns_upd_stat(screen); - free(p); + FREE(p); return NS_FAIL; } else #endif @@ -2217,7 +2206,7 @@ ns_parse_screen(_ns_sess * screen, int force, int width, char *p) else /* not a list of displays, but a message. handle separately. */ ret = ns_parse_screen_msg(screen, p); - free(p); /* release our (modified) copy of the status-line */ + FREE(p); /* release our (modified) copy of the status-line */ } /* send init string the first time around, just to be on the safe side. diff --git a/src/menus.c b/src/menus.c index bf2d8cc..5e0daf9 100644 --- a/src/menus.c +++ b/src/menus.c @@ -1244,7 +1244,7 @@ menu_action(menuitem_t *item) script_parse((char *) item->action.script); break; case MENUITEM_ALERT: - menu_dial(NULL, item->action.alert, 0, NULL, NULL); + menu_dialog(NULL, item->action.alert, 0, NULL, NULL); break; default: fatal_error("Internal Program Error: Unknown menuitem type: %u\n", item->type); @@ -1294,7 +1294,6 @@ menu_invoke_by_title(int x, int y, Window win, char *title, Time timestamp) l number of characters to compare in current entry m maximum number of characters in entry (size of input buffer) <- error code */ - int menu_tab(void *xd, char *sc[], int nsc, char *b, size_t l, size_t m) { @@ -1332,9 +1331,8 @@ menu_tab(void *xd, char *sc[], int nsc, char *b, size_t l, size_t m) inp_tab function doing tab-completion, NULL for none <- error code (0 succ, -1 fail, -2 cancel) */ - int -menu_dial(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (void *, char *, size_t, size_t)) +menu_dialog(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (void *, char *, size_t, size_t)) { static unsigned char short_buf[256]; unsigned char *kbuf = short_buf; @@ -1357,7 +1355,7 @@ menu_dial(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (voi if ((b = strdup("Press \"Return\" to continue...")) == NULL) return ret; } else { - if (((b = malloc(maxlen + 1)) == NULL)) + if (((b = MALLOC(maxlen + 1)) == NULL)) return ret; if (*retstr) { strncpy(b, *retstr, maxlen); @@ -1445,6 +1443,6 @@ menu_dial(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (voi #endif menu_delete(m); } - free(b); + FREE(b); return ret; } diff --git a/src/menus.h b/src/menus.h index e628888..8aae1d2 100644 --- a/src/menus.h +++ b/src/menus.h @@ -147,8 +147,8 @@ extern void menu_display(int, int, menu_t *); extern void menu_action(menuitem_t *); extern void menu_invoke(int, int, Window, menu_t *, Time); extern void menu_invoke_by_title(int, int, Window, char *, Time); -extern int menu_tab(void *,char *[],int,char *,size_t,size_t); -extern int menu_dial(void *,char *, int, char **,int (*)(void *,char *,size_t,size_t)); +extern int menu_tab(void *, char *[], int, char *, size_t, size_t); +extern int menu_dialog(void *, char *, int, char **, int (*)(void *, char *, size_t, size_t)); _XFUNCPROTOEND diff --git a/src/scream.h b/src/scream.h index b4332ad..40dc1e2 100644 --- a/src/scream.h +++ b/src/scream.h @@ -137,7 +137,7 @@ typedef struct __ns_efuns { /* callbacks into the terminal program */ int (*err_msg)(void *,int,char *); int (*execute)(void *,char **); int (*inp_text)(void *,int,char *); - int (*inp_dial)(void *,char *,int,char **,int (*)(void *,char *,size_t,size_t)); + int (*input_dialog)(void *,char *,int,char **,int (*)(void *,char *,size_t,size_t)); int (*inp_tab)(void *,char *[],int,char *,size_t,size_t); int (*waitstate)(void *,int); } _ns_efuns; @@ -212,7 +212,7 @@ int ns_rem_disp(_ns_sess *,int); int ns_ren_disp(_ns_sess *,int,char *); int ns_log_disp(_ns_sess *,int,char *); int ns_upd_stat(_ns_sess *); -int ns_inp_dial(_ns_sess *,char *,int,char **,int (*)(void *,char *,size_t,size_t)); +int ns_input_dialog(_ns_sess *,char *,int,char **,int (*)(void *,char *,size_t,size_t)); -- cgit v1.2.1