From 9959d6f98fce4b6630f2d47208ed5acf4b386ea4 Mon Sep 17 00:00:00 2001 From: Brian Barto Date: Wed, 20 Apr 2016 17:08:35 -0400 Subject: [PATCH] Changes nmsexec() to accept a structure containing it's multiple arguments. This made more sense than passing a growing list of arguments. modified: src/main.c modified: src/nms.c modified: src/nms.h modified: src/sneakers.c --- src/main.c | 6 +++++- src/nms.c | 8 ++++---- src/nms.h | 9 ++++++++- src/sneakers.c | 7 ++++++- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main.c b/src/main.c index d3f359b..118541f 100644 --- a/src/main.c +++ b/src/main.c @@ -4,6 +4,7 @@ int main(void) { char *input; + NMSArgs args = INIT_NMSARGS; // Geting input int c, inSize = 0; @@ -14,8 +15,11 @@ int main(void) { input[inSize] = '\0'; } + // Set needed args + args.src = input; + // Display characters - nmsexec(input, NULL); + nmsexec(&args); // Don't forget to free the allocated memory! free(input); diff --git a/src/nms.c b/src/nms.c index 0866239..a3e320d 100644 --- a/src/nms.c +++ b/src/nms.c @@ -54,7 +54,7 @@ char getMaskChar(void); * displaying a menu. * */ -char nmsexec(char *src, char *returnOptions) { +char nmsexec(NMSArgs *args) { struct winpos *list_pointer = NULL; struct winpos *start; // Always points to start of list struct winpos *temp; // Used for free()ing the list @@ -85,7 +85,7 @@ char nmsexec(char *src, char *returnOptions) { // Geting input n = 0; - while ((c = src[n++]) != '\0') { + while ((c = args->src[n++]) != '\0') { if (c == NEWLINE) { ++y; x = 0; @@ -231,8 +231,8 @@ char nmsexec(char *src, char *returnOptions) { // If stdin is set to the keyboard, user must press a key to continue if (isatty(STDIN_FILENO)) { ret = getch(); - if (returnOptions != NULL && strlen(returnOptions) > 0) - while (index(returnOptions, ret) == NULL) + if (args->return_opts != NULL && strlen(args->return_opts) > 0) + while (index(args->return_opts, ret) == NULL) ret = getch(); } else sleep(2); diff --git a/src/nms.h b/src/nms.h index cbf83a5..f4d0162 100644 --- a/src/nms.h +++ b/src/nms.h @@ -1,9 +1,16 @@ #ifndef NMS_H #define NMS_H 1 +#define INIT_NMSARGS { .src = NULL, .return_opts = NULL } + +typedef struct { + char *src; + char *return_opts; +} NMSArgs; + // Function prototypes // Display the characters stored in the display queue -char nmsexec(char *, char *); +char nmsexec(NMSArgs *); #endif diff --git a/src/sneakers.c b/src/sneakers.c index 94c55dd..3f69655 100644 --- a/src/sneakers.c +++ b/src/sneakers.c @@ -22,6 +22,7 @@ int main(void) { char *menu6 = "[6] Remote Operator Logon/Logoff"; char *foot1Center = "================================================================"; char *foot2Center = "[ ] Select Option or ESC to Abort"; + NMSArgs args = INIT_NMSARGS; // Get terminal dimentions (needed for centering) struct winsize w; @@ -153,8 +154,12 @@ int main(void) { } strcat(display, foot2Center); + // Set needed args + args.src = display; + args.return_opts = "123456"; + // Display characters - input = nmsexec(display, "123456"); + input = nmsexec(&args); switch (input) { case '1':