summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog3
-rw-r--r--quotasys.c20
-rw-r--r--quotasys.h6
-rw-r--r--warnquota.c36
4 files changed, 38 insertions, 27 deletions
diff --git a/Changelog b/Changelog
index 461deff..91ea125 100644
--- a/Changelog
+++ b/Changelog
@@ -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
diff --git a/quotasys.c b/quotasys.c
index 6f579b7..9fecd53 100644
--- a/quotasys.c
+++ b/quotasys.c
@@ -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);
}
/*
diff --git a/quotasys.h b/quotasys.h
index 7e26d5f..a777453 100644
--- a/quotasys.h
+++ b/quotasys.h
@@ -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 */