Skip to content

Commit

Permalink
tree: Use mx_die() instead of static die() function
Browse files Browse the repository at this point in the history
  • Loading branch information
donald committed Feb 17, 2024
1 parent 87f7e98 commit 1a0fe04
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 50 deletions.
26 changes: 8 additions & 18 deletions mxqkill.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,6 @@
#define UINT64_SPECIAL_MIN (uint64_t)(-2)
#define UINT64_HASVALUE(x) ((x) < UINT64_SPECIAL_MIN)

__attribute__ ((noreturn))
__attribute__ ((format (printf, 1, 2)))
static void die(const char *restrict fmt, ...) {
va_list ap;
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
va_end(ap);
_exit(1);
}

static void print_usage(void)
{
mxq_print_generic_version();
Expand Down Expand Up @@ -161,27 +151,27 @@ static void verify_job_owner(struct mx_mysql *mysql, uint64_t job_id, uint64_t u
" AND job_id = ?"
);
if (!stmt)
die("mx_mysql_statement_prepare(): %s\n", mx_mysql_error());
mx_die("mx_mysql_statement_prepare(): %s\n", mx_mysql_error());

mx_mysql_statement_param_bind(stmt, 0, uint64, &job_id);

unsigned long long num_rows;
int res = mx_mysql_statement_execute(stmt, &num_rows);
if (res < 0)
die("mx_mysql_statement_execute(): %s\n", mx_mysql_error());
mx_die("mx_mysql_statement_execute(): %s\n", mx_mysql_error());

if (num_rows == 0)
die("no such job_id %lu\n", job_id);
mx_die("no such job_id %lu\n", job_id);

uint64_t uid;
mx_mysql_statement_result_bind(stmt, 0, uint64, &uid);

res = mx_mysql_statement_fetch(stmt);
if (res < 0)
die("mx_mysql_statement_fetch: %s\n", mx_mysql_error());
mx_die("mx_mysql_statement_fetch: %s\n", mx_mysql_error());

if (uid != user_uid)
die("job %lu: permission denied\n", job_id);
mx_die("job %lu: permission denied\n", job_id);

mx_mysql_statement_close(&stmt);
}
Expand All @@ -192,16 +182,16 @@ static void set_job_cancelled(struct mx_mysql *mysql, uint64_t job_id) {
" WHERE job_id = ?"
);
if (!stmt)
die("mx_mysql_statement_prepare(): %s\n", mx_mysql_error());
mx_die("mx_mysql_statement_prepare(): %s\n", mx_mysql_error());

mx_mysql_statement_param_bind(stmt, 0, uint64, &job_id);

unsigned long long num_rows;
int res = mx_mysql_statement_execute(stmt, &num_rows);
if (res < 0)
die("mx_mysql_statement_execute(): %s\n", mx_mysql_error());
mx_die("mx_mysql_statement_execute(): %s\n", mx_mysql_error());
if (num_rows == 0)
die("no such job_id %lu\n", job_id);
mx_die("no such job_id %lu\n", job_id);

mx_mysql_statement_close(&stmt);
}
Expand Down
54 changes: 22 additions & 32 deletions mxqset.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,24 @@
#include "keywordset.h"
#include "stdarg.h"

static __attribute__ ((noreturn)) void die(char *msg, ...) {
va_list ap;

va_start(ap, msg);
fprintf(stderr, "%s: ",program_invocation_short_name);
vfprintf(stderr, msg, ap);
va_end(ap);
exit(1);
}

static void verify_group_permission(struct mx_mysql *mysql , long unsigned groupid, uid_t client_uid) {
struct mx_mysql_stmt *stmt = NULL;
unsigned long long num_rows;
unsigned uid;

stmt = mx_mysql_statement_prepare(mysql,"SELECT user_uid FROM mxq_group WHERE group_id = ? LIMIT 1");
if (!stmt)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
mx_mysql_statement_param_bind(stmt, 0, uint64, &(groupid));
if (mx_mysql_statement_execute(stmt, &num_rows) < 0)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
if (num_rows < 1)
die("no such group %ld\n", groupid);
mx_die("no such group %ld\n", groupid);
mx_mysql_statement_result_bind(stmt, 0, uint32, &uid);
if (mx_mysql_statement_fetch(stmt) < 0)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
if ( client_uid != 0 && client_uid != uid )
die("no permission to access this group\n");
mx_die("no permission to access this group\n");
mx_mysql_statement_close(&stmt);
}

Expand All @@ -59,14 +49,14 @@ static void update_closed_flag(struct mx_mysql *mysql, long unsigned groupid, en
stmt = mx_mysql_statement_prepare(mysql,
"UPDATE mxq_group SET group_flags = ( group_flags & ?) | ? WHERE group_id = ?");
if (!stmt)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
mx_mysql_statement_param_bind(stmt, 0, uint64, &(mask));
mx_mysql_statement_param_bind(stmt, 1, uint64, &(value));
mx_mysql_statement_param_bind(stmt, 2, uint64, &(groupid));
if (mx_mysql_statement_execute(stmt, &num_rows) < 0)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
if (num_rows < 1)
die("no such group %ld\n", groupid);
mx_die("no such group %ld\n", groupid);
mx_mysql_statement_close(&stmt);
}

Expand All @@ -81,15 +71,15 @@ static void update_blacklist(struct mx_mysql *mysql, long unsigned groupid, char
stmt = mx_mysql_statement_prepare(mysql,
"SELECT group_blacklist FROM mxq_group WHERE group_id = ? LIMIT 1");
if (!stmt)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
mx_mysql_statement_param_bind(stmt, 0, uint64, &groupid);
if (mx_mysql_statement_execute(stmt, &num_rows) < 0)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
if (num_rows < 1)
die("no such group %ld\n", groupid);
mx_die("no such group %ld\n", groupid);
mx_mysql_statement_result_bind(stmt, 0, string, &group_blacklist);
if (mx_mysql_statement_fetch(stmt) < 0)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
mx_mysql_statement_close(&stmt);
blacklist = keywordset_new(group_blacklist);
free(group_blacklist);
Expand All @@ -103,13 +93,13 @@ static void update_blacklist(struct mx_mysql *mysql, long unsigned groupid, char
stmt = mx_mysql_statement_prepare(mysql,
"UPDATE mxq_group SET group_blacklist = ? WHERE group_id = ?");
if (!stmt)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
mx_mysql_statement_param_bind(stmt, 0, string, &group_blacklist);
mx_mysql_statement_param_bind(stmt, 1, uint64, &groupid);
if (mx_mysql_statement_execute(stmt, &num_rows) < 0)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
if (num_rows < 1)
die("no such group %ld\n", groupid);
mx_die("no such group %ld\n", groupid);
mx_mysql_statement_close(&stmt);
free(group_blacklist);
keywordset_free(blacklist);
Expand All @@ -126,15 +116,15 @@ static void update_whitelist(struct mx_mysql *mysql, long unsigned groupid, char
stmt = mx_mysql_statement_prepare(mysql,
"SELECT group_whitelist FROM mxq_group WHERE group_id = ? LIMIT 1");
if (!stmt)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
mx_mysql_statement_param_bind(stmt, 0, uint64, &groupid);
if (mx_mysql_statement_execute(stmt, &num_rows) < 0)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
if (num_rows < 1)
die("no such group %ld\n", groupid);
mx_die("no such group %ld\n", groupid);
mx_mysql_statement_result_bind(stmt, 0, string, &group_whitelist);
if (mx_mysql_statement_fetch(stmt) < 0)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
mx_mysql_statement_close(&stmt);
whitelist = keywordset_new(group_whitelist);
free(group_whitelist);
Expand All @@ -148,13 +138,13 @@ static void update_whitelist(struct mx_mysql *mysql, long unsigned groupid, char
stmt = mx_mysql_statement_prepare(mysql,
"UPDATE mxq_group SET group_whitelist = ? WHERE group_id = ?");
if (!stmt)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
mx_mysql_statement_param_bind(stmt, 0, string, &group_whitelist);
mx_mysql_statement_param_bind(stmt, 1, uint64, &groupid);
if (mx_mysql_statement_execute(stmt, &num_rows) < 0)
die("%s\n", mx_mysql_error());
mx_die("%s\n", mx_mysql_error());
if (num_rows < 1)
die("no such group %ld\n", groupid);
mx_die("no such group %ld\n", groupid);
mx_mysql_statement_close(&stmt);
free(group_whitelist);
keywordset_free(whitelist);
Expand Down

0 comments on commit 1a0fe04

Please sign in to comment.