+ }
+
+ // Show user information
+ Dispense_ShowUser(sock, text_args[1]);
+
+ close(sock);
+ return 0;
+ }
+ //
+ // `dispense give`
+ // - "Here, have some money."
+ if( strcmp(text_args[0], "give") == 0 )
+ {
+ if( text_argc != 3 ) {
+ fprintf(stderr, "`dispense give` takes three arguments\n");
+ ShowUsage();
+ return -1;
+ }
+
+ // text_args[1]: Destination
+ // text_args[2]: Ammount
+ // text_args[3]: Reason
+
+ // Connect to server
+ sock = OpenConnection(gsDispenseServer, giDispensePort);
+ if( sock < 0 ) return -1;
+
+ // Authenticate
+ if( Authenticate(sock) )
+ return -1;
+
+ Dispense_Give(sock, text_args[1], atoi(text_args[2]), text_args[3]);
+ return 0;
+ }
+ //
+ // `dispense user`
+ // - User administration (Admin Only)
+ if( strcmp(text_args[0], "user") == 0 )
+ {
+ // Check argument count
+ if( text_argc == 1 ) {
+ fprintf(stderr, "Error: `dispense user` requires arguments\n");
+ ShowUsage();
+ exit(1);
+ }
+
+ // Connect to server
+ sock = OpenConnection(gsDispenseServer, giDispensePort);
+ if( sock < 0 ) return -1;
+
+ // Attempt authentication
+ if( Authenticate(sock) )
+ return -1;
+
+ // Add new user?
+ if( strcmp(text_args[1], "add") == 0 )
+ {
+ if( text_argc != 2 ) {
+ fprintf(stderr, "Error: `dispense user add` requires an argument\n");