/*
* Sort entries in db according to order in another.
*/
-int commonio_sort_wrt (struct commonio_db *shadow, struct commonio_db *passwd)
+int commonio_sort_wrt (struct commonio_db *shadow,
+ const struct commonio_db *passwd)
{
struct commonio_entry *head = NULL, *pw_ptr, *spw_ptr;
const char *name;
extern int commonio_close (struct commonio_db *);
extern int commonio_unlock (struct commonio_db *);
extern void commonio_del_entry (struct commonio_db *,
- const struct commonio_entry *);
+ const struct commonio_entry *);
extern int commonio_sort_wrt (struct commonio_db *shadow,
- struct commonio_db *passwd);
+ const struct commonio_db *passwd);
extern int commonio_sort (struct commonio_db *db,
- int (*cmp) (const void *, const void *));
+ int (*cmp) (const void *, const void *));
#endif
/* list.c */
extern /*@only@*/ /*@out@*/char **add_list (/*@returned@*/ /*@only@*/char **, const char *);
extern /*@only@*/ /*@out@*/char **del_list (/*@returned@*/ /*@only@*/char **, const char *);
-extern /*@only@*/ /*@out@*/char **dup_list (const char *const *);
-extern bool is_on_list (const char *const *list, const char *member);
+extern /*@only@*/ /*@out@*/char **dup_list (char *const *);
+extern bool is_on_list (char *const *list, const char *member);
extern /*@only@*/char **comma_to_list (const char *);
/* log.c */
static bool is_listed (const char *cfgin, const char *tty, bool def)
{
FILE *fp;
- char buf[200], *cons, *s;
+ char buf[200], *s;
+ const char *cons;
/*
* If the CONSOLE configuration definition isn't given,
#endif /* !USE_UTMPX */
)
{
- char *ftmp;
+ const char *ftmp;
int fd;
/*
bool hushed (const char *username)
{
struct passwd *pw;
- char *hushfile;
+ const char *hushfile;
char buf[BUFSIZ];
bool found;
FILE *fp;
return tmp;
}
-/*@only@*/ /*@out@*/char **dup_list (const char *const *list)
+/*
+ * Duplicate a list.
+ * The input list is not modified, but in order to allow the use of this
+ * function with list of members, the list elements are not enforced to be
+ * constant strings here.
+ */
+/*@only@*/ /*@out@*/char **dup_list (char *const *list)
{
int i;
char **tmp;
return tmp;
}
-bool is_on_list (const char *const *list, const char *member)
+/*
+ * Check if member is part of the input list
+ * The input list is not modified, but in order to allow the use of this
+ * function with list of members, the list elements are not enforced to be
+ * constant strings here.
+ */
+bool is_on_list (char *const *list, const char *member)
{
assert (NULL != member);
assert (NULL != list);
char *members;
char **array;
int i;
- const char *cp;
+ char *cp;
char *cp2;
assert (NULL != comma);
*/
if (NULL != prompt) {
- cp = getdef_str ("ISSUE_FILE");
- if (NULL != cp) {
- fp = fopen (cp, "r");
+ const char *fname = getdef_str ("ISSUE_FILE");
+ if (NULL != fname) {
+ fp = fopen (fname, "r");
if (NULL != fp) {
while ((i = getc (fp)) != EOF) {
(void) putc (i, stdout);
* Copyright (c) 1989 - 1991, Julianne Frances Haugh
* Copyright (c) 1996 - 1997, Marek Michałkiewicz
* Copyright (c) 2003 - 2005, Tomasz Kłoczko
+ * Copyright (c) 2010 , Nicolas François
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
void motd (void)
{
FILE *fp;
- char motdlist[BUFSIZ], *motdfile, *mb;
+ char *motdlist;
+ const char *motdfile;
+ char *mb;
register int c;
- if ((mb = getdef_str ("MOTD_FILE")) == NULL)
+ motdfile = getdef_str ("MOTD_FILE");
+ if (NULL == motdfile) {
return;
+ }
+
+ motdlist = xstrdup (motdfile);
- strncpy (motdlist, mb, sizeof (motdlist));
- motdlist[sizeof (motdlist) - 1] = '\0';
+ for (mb = motdlist; ;mb = NULL) {
+ motdfile = strtok (mb, ":");
+ if (NULL == motdfile) {
+ break;
+ }
- for (mb = motdlist; (motdfile = strtok (mb, ":")) != NULL; mb = NULL) {
- if ((fp = fopen (motdfile, "r")) != NULL) {
- while ((c = getc (fp)) != EOF)
+ fp = fopen (motdfile, "r");
+ if (NULL != fp) {
+ while ((c = getc (fp)) != EOF) {
putchar (c);
+ }
fclose (fp);
}
}
fflush (stdout);
+
+ free (motdlist);
}
+
#include <security/pam_appl.h>
#include "prototypes.h"
-/*@null@*/ /*@only@*/static char *non_interactive_password = NULL;
+/*@null@*/ /*@only@*/static const char *non_interactive_password = NULL;
static int ni_conv (int num_msg,
const struct pam_message **msg,
struct pam_response **resp,
#ifndef USE_PAM
char *envf;
#endif
- char *cp;
+ const char *cp;
/*
* Change the current working directory to be the home directory
*/
void sulog (const char *tty, bool success, const char *oldname, const char *name)
{
- char *sulog_file;
+ const char *sulog_file;
time_t now;
struct tm *tm;
FILE *fp;
"FAILED su for %s by %s",name,oldname));
}
- if ((sulog_file = getdef_str ("SULOG_FILE")) == (char *) 0)
+ sulog_file = getdef_str ("SULOG_FILE");
+ if (NULL == sulog_file) {
return;
+ }
oldgid = getgid ();
oldmask = umask (077);
fd = open ("/dev/null", O_RDWR);
/* Child */
- dup2 (fd, 0); // Close Stdin
+ dup2 (fd, 0); /* Close Stdin */
if (ignore_stderr) {
- dup2 (fd, 2); // Close Stderr
+ dup2 (fd, 2); /* Close Stderr */
}
execve (command, (char *const *) argv, (char *const *) env);
{
FILE *fp;
char buf[BUFSIZ];
- char *typefile;
+ const char *typefile;
char *cp;
char type[BUFSIZ];
char port[BUFSIZ];
#endif
int err;
const char *cp;
- char *tmp;
+ const char *tmp;
char fromhost[512];
struct passwd *pwd = NULL;
char **envp = environ;
static void user_cancel (const char *user)
{
- char *cmd;
+ const char *cmd;
pid_t pid, wpid;
int status;
*/
static void usage (int status)
{
- (void)
- fputs (_("Usage: vipw [options]\n"
- "\n"
- "Options:\n"
- " -g, --group edit group database\n"
- " -h, --help display this help message and exit\n"
- " -p, --passwd edit passwd database\n"
- " -q, --quiet quiet mode\n"
- " -s, --shadow edit shadow or gshadow database\n"
+ FILE *usageout = (E_SUCCESS != status) ? stderr : stdout;
+ (void) fputs (_("Usage: vipw [options]\n"
+ "\n"
+ "Options:\n"), usageout);
+ (void) fputs (_(" -g, --group edit group database\n"), usageout);
+ (void) fputs (_(" -h, --help display this help message and exit\n"), usageout);
+ (void) fputs (_(" -p, --passwd edit passwd database\n"), usageout);
+ (void) fputs (_(" -q, --quiet quiet mode\n"), usageout);
+ (void) fputs (_(" -s, --shadow edit shadow or gshadow database\n"), usageout);
#ifdef WITH_TCB
- " -u, --user which user's tcb shadow file to edit\n"
+ (void) fputs (_(" -u, --user which user's tcb shadow file to edit\n"), usageout);
#endif /* WITH_TCB */
- "\n"), (E_SUCCESS != status) ? stderr : stdout);
+ (void) fputs (_("\n"), usageout);
exit (status);
}