[Commit] librr/src Makefile.am,1.4,1.5 rr.c,1.4,1.5 rr.h,1.8,1.9
rr_board.c,1.8,1.9 rr_client.c,1.4,1.5
Carl Worth
commit at keithp.com
Sat Jun 14 01:32:29 PDT 2003
- Previous message: [Commit] rrserver games.5c,1.23,1.24
- Next message: [Commit]
grrobot/src Makefile.am,1.1.1.1,1.2 grr_board_view.c,1.3,1.4
grr_board_view.h,1.2,1.3 grrobot.c,1.2,1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Committed by: cworth
Update of /local/src/CVS/librr/src
In directory home.keithp.com:/tmp/cvs-serv18870/src
Modified Files:
Makefile.am rr.c rr.h rr_board.c rr_client.c
Log Message:
Fixes
Index: Makefile.am
===================================================================
RCS file: /local/src/CVS/librr/src/Makefile.am,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- Makefile.am 12 Jun 2003 18:00:55 -0000 1.4
+++ Makefile.am 14 Jun 2003 07:32:26 -0000 1.5
@@ -11,6 +11,5 @@
rr_string.c \
rr_strbuf.c
-librr_la_CFLAGS = -Wall
librr_la_LDFLAGS = -version-info @VERSION_INFO@
Index: rr.c
===================================================================
RCS file: /local/src/CVS/librr/src/rr.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- rr.c 11 Jun 2003 23:26:14 -0000 1.4
+++ rr.c 14 Jun 2003 07:32:26 -0000 1.5
@@ -58,10 +58,6 @@
return "out of memory";
case RR_STATUS_ROBOT_NOT_FOUND:
return "robot not found";
- case RR_STATUS_NOT_DIRECTION:
- return "not a direction";
- case RR_STATUS_BLOCKED:
- return "robot is blocked";
case RR_STATUS_OCCUPIED:
return "space is already occupied";
case RR_STATUS_HISTORY_EMPTY:
@@ -78,8 +74,48 @@
return "unexpected protocol error";
case RR_STATUS_EOF:
return "end of file";
+ case RR_STATUS_NO_NAME_SET:
+ return "no name set";
case RR_STATUS_INVALID_NAME:
- return "not a unique username";
+ return "invalid username";
+ case RR_STATUS_INVALID_COMMAND:
+ return "invalid command";
+ case RR_STATUS_SYNTAX_ERROR:
+ return "syntax error";
+ case RR_STATUS_NOT_NUMBER:
+ return "not a number";
+ case RR_STATUS_NOT_COLOR:
+ return "not a color";
+ case RR_STATUS_NOT_SHAPE:
+ return "not a shape";
+ case RR_STATUS_NOT_DIRECTION:
+ return "not a direction";
+ case RR_STATUS_NO_GAME:
+ return "no such game";
+ case RR_STATUS_NOT_EMPTY:
+ return "game is not empty";
+ case RR_STATUS_NO_USER:
+ return "no such user";
+ case RR_STATUS_NOT_IN_GAME:
+ return "not in game";
+ case RR_STATUS_NOT_PLAYING:
+ return "not playing";
+ case RR_STATUS_NOT_FINISHED:
+ return "game not finished";
+ case RR_STATUS_NOT_BIDDING:
+ return "not bidding";
+ case RR_STATUS_NOT_LOWER:
+ return "bid is not lower";
+ case RR_STATUS_NO_BID:
+ return "no bid entered";
+ case RR_STATUS_NOT_ACTIVE:
+ return "not active";
+ case RR_STATUS_BLOCKED:
+ return "robot is blocked";
+ case RR_STATUS_TOO_MANY_MOVES:
+ return "too many moves";
+ case RR_STATUS_UNPARSED_ERROR:
+ return "unparsed error";
default:
return "unidentified error";
}
Index: rr.h
===================================================================
RCS file: /local/src/CVS/librr/src/rr.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- rr.h 12 Jun 2003 22:56:46 -0000 1.8
+++ rr.h 14 Jun 2003 07:32:26 -0000 1.9
@@ -272,8 +272,7 @@
rr_status_t
rr_board_set_goal_target (rr_board_t *board,
- rr_target_color_t color,
- rr_target_shape_t shape);
+ rr_target_t target);
rr_target_t
rr_board_get_goal_target (rr_board_t *board);
@@ -359,6 +358,11 @@
int
rr_client_fd (rr_client_t *client);
+
+rr_status_t
+rr_client_request (rr_client_t *client,
+ const char *request,
+ char ***response);
rr_status_t
rr_client_helo (rr_client_t *client, const char *user);
Index: rr_board.c
===================================================================
RCS file: /local/src/CVS/librr/src/rr_board.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- rr_board.c 12 Jun 2003 22:56:46 -0000 1.8
+++ rr_board.c 14 Jun 2003 07:32:26 -0000 1.9
@@ -279,10 +279,9 @@
rr_status_t
rr_board_set_goal_target (rr_board_t *board,
- rr_target_color_t color,
- rr_target_shape_t shape)
+ rr_target_t target)
{
- board->goal_target = (color | shape);
+ board->goal_target = target;
return RR_STATUS_SUCCESS;
}
Index: rr_client.c
===================================================================
RCS file: /local/src/CVS/librr/src/rr_client.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- rr_client.c 12 Jun 2003 18:00:56 -0000 1.4
+++ rr_client.c 14 Jun 2003 07:32:26 -0000 1.5
@@ -50,18 +50,15 @@
_rr_client_disconnect (rr_client_t *client);
static rr_status_t
-_rr_client_request (rr_client_t *client,
- rr_cmd_t cmd, const char *arg,
- char ***response);
-
-static rr_status_t
-_rr_client_send (rr_client_t *client, const char *fmt, ...);
+_rr_client_cmd_request (rr_client_t *client,
+ rr_cmd_t cmd, const char *arg,
+ char ***response);
static rr_status_t
-_rr_client_send_va (rr_client_t *client, const char *fmt, va_list va);
+_rr_client_send (rr_client_t *client, const char *msg);
static rr_status_t
-_rr_client_recv (rr_client_t *client, rr_cmd_t cmd, char ***arg);
+_rr_client_recv (rr_client_t *client, const char *request, char ***arg);
static rr_status_t
_rr_client_error_to_status (const char *error);
@@ -432,73 +429,73 @@
rr_status_t
rr_client_helo (rr_client_t *client, const char *user)
{
- return _rr_client_request (client, RR_CMD_HELO, user, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_HELO, user, NULL);
}
rr_status_t
rr_client_games (rr_client_t *client, char ***games)
{
- return _rr_client_request (client, RR_CMD_GAMES, NULL, games);
+ return _rr_client_cmd_request (client, RR_CMD_GAMES, NULL, games);
}
rr_status_t
rr_client_message (rr_client_t *client, const char *text)
{
- return _rr_client_request (client, RR_CMD_MESSAGE, text, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_MESSAGE, text, NULL);
}
rr_status_t
rr_client_quit (rr_client_t *client)
{
- return _rr_client_request (client, RR_CMD_QUIT, NULL, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_QUIT, NULL, NULL);
}
rr_status_t
rr_client_players (rr_client_t *client, char ***players)
{
- return _rr_client_request (client, RR_CMD_PLAYERS, NULL, players);
+ return _rr_client_cmd_request (client, RR_CMD_PLAYERS, NULL, players);
}
rr_status_t
rr_client_watchers (rr_client_t *client, char ***watchers)
{
- return _rr_client_request (client, RR_CMD_WATCHERS, NULL, watchers);
+ return _rr_client_cmd_request (client, RR_CMD_WATCHERS, NULL, watchers);
}
rr_status_t
rr_client_gameinfo (rr_client_t *client, const char *game, char ***info)
{
- return _rr_client_request (client, RR_CMD_GAMEINFO, game, info);
+ return _rr_client_cmd_request (client, RR_CMD_GAMEINFO, game, info);
}
rr_status_t
rr_client_new (rr_client_t *client, const char *game)
{
- return _rr_client_request (client, RR_CMD_NEW, game, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_NEW, game, NULL);
}
rr_status_t
rr_client_join (rr_client_t *client, const char *game)
{
- return _rr_client_request (client, RR_CMD_JOIN, game, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_JOIN, game, NULL);
}
rr_status_t
rr_client_watch (rr_client_t *client, const char *game)
{
- return _rr_client_request (client, RR_CMD_WATCH, game, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_WATCH, game, NULL);
}
rr_status_t
rr_client_dispose (rr_client_t *client, const char *game)
{
- return _rr_client_request (client, RR_CMD_DISPOSE, game, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_DISPOSE, game, NULL);
}
rr_status_t
rr_client_userinfo (rr_client_t *client, const char *user, char ***info)
{
- return _rr_client_request (client, RR_CMD_USERINFO, user, info);
+ return _rr_client_cmd_request (client, RR_CMD_USERINFO, user, info);
}
rr_status_t
@@ -507,7 +504,7 @@
rr_status_t status;
char **args;
- status = _rr_client_request (client, RR_CMD_SHOW, NULL, &args);
+ status = _rr_client_cmd_request (client, RR_CMD_SHOW, NULL, &args);
if (status)
return status;
@@ -519,70 +516,101 @@
rr_status_t
rr_client_turn (rr_client_t *client)
{
- return _rr_client_request (client, RR_CMD_TURN, NULL, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_TURN, NULL, NULL);
}
rr_status_t
rr_client_part (rr_client_t *client)
{
- return _rr_client_request (client, RR_CMD_PART, NULL, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_PART, NULL, NULL);
}
rr_status_t
rr_client_bid (rr_client_t *client, const char *bid)
{
- return _rr_client_request (client, RR_CMD_BID, bid, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_BID, bid, NULL);
}
rr_status_t
rr_client_revoke (rr_client_t *client)
{
- return _rr_client_request (client, RR_CMD_REVOKE, NULL, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_REVOKE, NULL, NULL);
}
rr_status_t
rr_client_abandon (rr_client_t *client)
{
- return _rr_client_request (client, RR_CMD_ABANDON, NULL, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_ABANDON, NULL, NULL);
}
rr_status_t
rr_client_move (rr_client_t *client, const char *move)
{
- return _rr_client_request (client, RR_CMD_MOVE, move, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_MOVE, move, NULL);
}
rr_status_t
rr_client_undo (rr_client_t *client)
{
- return _rr_client_request (client, RR_CMD_UNDO, NULL, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_UNDO, NULL, NULL);
}
rr_status_t
rr_client_reset (rr_client_t *client)
{
- return _rr_client_request (client, RR_CMD_RESET, NULL, NULL);
+ return _rr_client_cmd_request (client, RR_CMD_RESET, NULL, NULL);
}
static rr_status_t
-_rr_client_request (rr_client_t *client,
- rr_cmd_t cmd, const char *arg,
- char ***response)
+_rr_client_cmd_request (rr_client_t *client,
+ rr_cmd_t cmd, const char *arg,
+ char ***response)
{
- rr_status_t status = RR_STATUS_SUCCESS;
+ rr_status_t status;
char *cmd_str;
- char **recv;
+ char *request;
cmd_str = RR_CLIENT_COMMAND[cmd].arg;
if (arg)
- status = _rr_client_send (client, "%s %s\n", cmd_str, arg);
+ _rr_string_sprintf_alloc (&request, "%s %s\n", cmd_str, arg);
else
- status = _rr_client_send (client, "%s\n", cmd_str);
+ _rr_string_sprintf_alloc (&request, "%s\n", cmd_str);
+
+ status = rr_client_request (client, request, response);
+
+ free (request);
+
+ return status;
+}
+
+rr_status_t
+rr_client_request (rr_client_t *client,
+ const char *request,
+ char ***response)
+{
+ rr_status_t status = RR_STATUS_SUCCESS;
+ char **recv;
+ char *r = NULL;
+
+ if (request[strlen (request)-1] != '\n') {
+ r = malloc (strlen (request) + 2);
+ if (r == NULL)
+ return RR_STATUS_NO_MEMORY;
+ strcpy (r, request);
+ r[strlen (request)] = '\n';
+ r[strlen (request)+1] = '\0';
+ request = r;
+ }
+
+ status = _rr_client_send (client, request);
if (status)
goto DONE;
- status = _rr_client_recv (client, cmd, &recv);
+ if (r)
+ free (r);
+
+ status = _rr_client_recv (client, request, &recv);
if (status)
goto DONE;
@@ -596,35 +624,16 @@
return status;
}
-/* NOTE: Called with client->mutex held */
-static rr_status_t
-_rr_client_send (rr_client_t *client, const char *fmt, ...)
-{
- rr_status_t status;
- va_list va;
-
- va_start (va, fmt);
- status = _rr_client_send_va (client, fmt, va);
- va_end (va);
-
- return status;
-}
-
-/* NOTE: Called with client->mutex held */
static rr_status_t
-_rr_client_send_va (rr_client_t *client, const char *fmt, va_list va)
+_rr_client_send (rr_client_t *client, const char *msg)
{
- char *msg, *m;
+ const char *m;
int len, r;
rr_status_t status = RR_STATUS_SUCCESS;
if (client->sock == -1)
return RR_STATUS_NOT_CONNECTED;
- _rr_string_sprintf_alloc_va (&msg, fmt, va);
- if (msg == NULL)
- return RR_STATUS_NO_MEMORY;
-
len = strlen (msg);
m = msg;
while (len)
@@ -644,8 +653,6 @@
else
_rr_client_write_block (client);
}
-
- free (msg);
return status;
}
@@ -694,14 +701,14 @@
else
return RR_STATUS_UNPARSED_ERROR;
}
-/* NOTE: Called with client->mutex held */
+
static rr_status_t
-_rr_client_recv (rr_client_t *client, rr_cmd_t cmd, char ***argp)
+_rr_client_recv (rr_client_t *client, const char *request, char ***argp)
{
char **arg;
rr_status_t status = _rr_client_reply (client, &arg);
- if (arg[0] && strcmp (arg[0], RR_CLIENT_COMMAND[cmd].arg) == 0) {
+ if (arg[0] && strncasecmp (arg[0], request, strlen (arg[0])) == 0) {
status = RR_STATUS_SUCCESS;
_rr_strings_cdr (arg);
*argp = arg;
- Previous message: [Commit] rrserver games.5c,1.23,1.24
- Next message: [Commit]
grrobot/src Makefile.am,1.1.1.1,1.2 grr_board_view.c,1.3,1.4
grr_board_view.h,1.2,1.3 grrobot.c,1.2,1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Commit
mailing list