+int Dispense_AddUser(int Socket, const char *Username)
+{
+ char *buf;
+ int responseCode, ret;
+
+ sendf(Socket, "USER_ADD %s\n", Username);
+
+ buf = ReadLine(Socket);
+ responseCode = atoi(buf);
+
+ switch(responseCode)
+ {
+ case 200:
+ printf("User '%s' added\n", Username);
+ ret = 0;
+ break;
+
+ case 403:
+ printf("Only wheel can add users\n");
+ ret = 1;
+ break;
+
+ case 404:
+ printf("User '%s' already exists\n", Username);
+ ret = 0;
+ break;
+
+ default:
+ fprintf(stderr, "Unknown response code %i '%s'\n", responseCode, buf);
+ ret = -1;
+ break;
+ }
+
+ free(buf);
+
+ return ret;
+}
+
+int Dispense_SetUserType(int Socket, const char *Username, const char *TypeString)
+{
+ char *buf;
+ int responseCode, ret;
+
+ // TODO: Pre-validate the string
+
+ sendf(Socket, "USER_FLAGS %s %s\n", Username, TypeString);
+
+ buf = ReadLine(Socket);
+ responseCode = atoi(buf);
+
+ switch(responseCode)
+ {
+ case 200:
+ printf("User '%s' updated\n", Username);
+ ret = 0;
+ break;
+
+ case 403:
+ printf("Only wheel can modify users\n");
+ ret = 1;
+ break;
+
+ case 404:
+ printf("User '%s' does not exist\n", Username);
+ ret = 0;
+ break;
+
+ case 407:
+ printf("Flag string is invalid\n");
+ ret = 0;
+ break;
+
+ default:
+ fprintf(stderr, "Unknown response code %i '%s'\n", responseCode, buf);
+ ret = -1;
+ break;
+ }
+
+ free(buf);
+
+ return ret;
+}
+