commit f91ba69db75fe9247939878002af97bd974a6c05
parent 3103e6f39f27efab0e4dea190c49fcc61ed0abfd
Author: Nihal Jere <nihal@nihaljere.xyz>
Date: Tue, 18 May 2021 23:31:25 -0500
use union for extra command data
Diffstat:
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/atd.c b/atd.c
@@ -75,12 +75,12 @@ ssize_t cmdadd(struct fdbuf fdbuf) {
count++;
}
- cmd.data = malloc(count + 1);
- if (cmd.data == NULL)
+ cmd.data.dial.num = malloc(count + 1);
+ if (cmd.data.dial.num == NULL)
goto bad;
- memcpy(cmd.data, num, count);
- ((char*)cmd.data)[count] = '\0';
+ memcpy(cmd.data.dial.num, num, count);
+ ((char*)cmd.data.dial.num)[count] = '\0';
fprintf(stderr, "received dial with number %s\n", cmd.data);
break;
@@ -287,8 +287,8 @@ int main(int argc, char *argv[])
if (!cmd.op)
continue;
- if (cmd.data) {
- len = snprintf(fdbufs[BACKEND].in, BUFSIZE, cmd_to_at[cmd.op], cmd.data);
+ if (cmd.op == CMD_DIAL) {
+ len = snprintf(fdbufs[BACKEND].in, BUFSIZE, cmd_to_at[cmd.op], cmd.data.dial.num);
} else {
len = snprintf(fdbufs[BACKEND].in, BUFSIZE, cmd_to_at[cmd.op]);
}
diff --git a/atd.h b/atd.h
@@ -11,7 +11,11 @@ enum ops {
struct command {
int index;
enum ops op;
- void *data;
+ union {
+ struct {
+ char *num;
+ } dial;
+ } data;
};
char *cmd_to_at[] = {