diff options
-rw-r--r-- | Changelog | 3 | ||||
-rw-r--r-- | quotasys.c | 20 | ||||
-rw-r--r-- | quotasys.h | 6 | ||||
-rw-r--r-- | warnquota.c | 36 |
4 files changed, 38 insertions, 27 deletions
@@ -1,4 +1,4 @@ -Changes in quota-tools from 3.01 to ???? +Changes in quota-tools from 3.01 to 3.02 * added -n option (don't resolve names) to repquota (Jan Kara) * quota tools now correctly handle zero grace times in old format (Jan Kara) @@ -7,6 +7,7 @@ Changes in quota-tools from 3.01 to ???? * another fix to quotastats (Jan Kara) * added check to format detection for bad endianity (Jan Kara) * implemented conversion of files with bad endianity (Jan Kara) +* fixes in warnquota (Jan Kara) Changes in quota-tools from 3.01-final to 3.01 @@ -102,38 +102,44 @@ int name2id(char *name, int qtype) /* * Convert uid to name */ -void uid2user(uid_t id, char *buf) +int uid2user(uid_t id, char *buf) { struct passwd *entry; - if (!(entry = getpwuid(id))) + if (!(entry = getpwuid(id))) { snprintf(buf, MAXNAMELEN, "#%u", (uint) id); + return 1; + } else sstrncpy(buf, entry->pw_name, MAXNAMELEN); + return 0; } /* * Convert gid to name */ -void gid2group(gid_t id, char *buf) +int gid2group(gid_t id, char *buf) { struct group *entry; - if (!(entry = getgrgid(id))) + if (!(entry = getgrgid(id))) { snprintf(buf, MAXNAMELEN, "#%u", (uint) id); + return 1; + } else sstrncpy(buf, entry->gr_name, MAXNAMELEN); + return 0; } /* * Convert id to user/groupname */ -void id2name(int id, int qtype, char *buf) +int id2name(int id, int qtype, char *buf) { if (qtype == USRQUOTA) - uid2user(id, buf); + return uid2user(id, buf); else - gid2group(id, buf); + return gid2group(id, buf); } /* @@ -43,13 +43,13 @@ gid_t group2gid(char *); int name2id(char *name, int qtype); /* Convert uid to username */ -void uid2user(uid_t, char *); +int uid2user(uid_t, char *); /* Convert gid to groupname */ -void gid2group(gid_t, char *); +int gid2group(gid_t, char *); /* Convert id to user/group name */ -void id2name(int id, int qtype, char *buf); +int id2name(int id, int qtype, char *buf); /* Convert quota format name to number */ int name2fmt(char *str); diff --git a/warnquota.c b/warnquota.c index 0d8f9c1..61447cb 100644 --- a/warnquota.c +++ b/warnquota.c @@ -10,7 +10,7 @@ * * Author: Marco van Wieringen <mvw@planets.elm.net> * - * Version: $Id: warnquota.c,v 1.5 2001/11/09 08:17:35 jkar8572 Exp $ + * Version: $Id: warnquota.c,v 1.6 2001/11/09 08:53:58 jkar8572 Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -94,13 +94,19 @@ static struct offenderlist *offenders = (struct offenderlist *)0; struct offenderlist *add_offender(int id, char *name) { struct offenderlist *offender; - + char namebuf[MAXNAMELEN]; + + if (!name) { + if (id2name(id, USRQUOTA, namebuf)) { + errstr(_("Can't get name for uid %u.\n"), id); + return NULL; + } + name = namebuf; + } offender = (struct offenderlist *)smalloc(sizeof(struct offenderlist)); - offender->offender_id = id; - offender->offender_name = (char *)smalloc(strlen(name) + 1); + offender->offender_name = sstrdup(name); offender->usage = (struct usage *)NULL; - strcpy(offender->offender_name, name); offender->next = offenders; offenders = offender; return offender; @@ -132,11 +138,9 @@ void add_offence(struct dquot *dquot, char *name) int check_offence(struct dquot *dquot, char *name) { - if ( - (dquot->dq_dqb.dqb_bsoftlimit - && toqb(dquot->dq_dqb.dqb_curspace) >= dquot->dq_dqb.dqb_bsoftlimit) - || (dquot->dq_dqb.dqb_isoftlimit - && dquot->dq_dqb.dqb_curinodes >= dquot->dq_dqb.dqb_isoftlimit)) add_offence(dquot, name); + if ((dquot->dq_dqb.dqb_bsoftlimit && toqb(dquot->dq_dqb.dqb_curspace) >= dquot->dq_dqb.dqb_bsoftlimit) + || (dquot->dq_dqb.dqb_isoftlimit && dquot->dq_dqb.dqb_curinodes >= dquot->dq_dqb.dqb_isoftlimit)) + add_offence(dquot, name); return 0; } @@ -287,12 +291,12 @@ void readconfigfile(const char *filename, struct configparams *config) int line; /* set default values */ - strncpy(config->mail_cmd, MAIL_CMD, CNF_BUFFER); - strncpy(config->from, FROM, CNF_BUFFER); - strncpy(config->subject, SUBJECT, CNF_BUFFER); - strncpy(config->cc_to, CC_TO, CNF_BUFFER); - strncpy(config->support, SUPPORT, CNF_BUFFER); - strncpy(config->phone, PHONE, CNF_BUFFER); + sstrncpy(config->mail_cmd, MAIL_CMD, CNF_BUFFER); + sstrncpy(config->from, FROM, CNF_BUFFER); + sstrncpy(config->subject, SUBJECT, CNF_BUFFER); + sstrncpy(config->cc_to, CC_TO, CNF_BUFFER); + sstrncpy(config->support, SUPPORT, CNF_BUFFER); + sstrncpy(config->phone, PHONE, CNF_BUFFER); fp = fopen(filename, "r"); if (fp == (FILE *) NULL) { /* if config file doesn't exist or is not readable */ |