projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add more commands to s51 assembly-language debugger
[fw/altos]
/
s51
/
s51-main.c
diff --git
a/s51/s51-main.c
b/s51/s51-main.c
index e8bf2d7dbf65d0020ffa511b2426ffc1ded748df..9a5ca7c29a5465944ed29ab286be3ac6abd3f930 100644
(file)
--- a/
s51/s51-main.c
+++ b/
s51/s51-main.c
@@
-43,7
+43,7
@@
main(int argc, char **argv)
FILE *console_out = stdout;
char *endptr;
FILE *console_out = stdout;
char *endptr;
- while ((opt = getopt(argc, argv, "PVvHht:X:c:Z:s:S:p:")) != -1) {
+ while ((opt = getopt(argc, argv, "PVvHht:X:c:
r:
Z:s:S:p:")) != -1) {
switch (opt) {
case 't':
cpu = optarg;
switch (opt) {
case 't':
cpu = optarg;
@@
-63,6
+63,7
@@
main(int argc, char **argv)
break;
case 'c':
break;
break;
case 'c':
break;
+ case 'r':
case 'Z':
s51_port = strtol(optarg, &endptr, 0);
if (endptr == optarg || strlen(endptr) != 0)
case 'Z':
s51_port = strtol(optarg, &endptr, 0);
if (endptr == optarg || strlen(endptr) != 0)
@@
-100,6
+101,11
@@
main(int argc, char **argv)
perror ("socket");
exit(1);
}
perror ("socket");
exit(1);
}
+ r = setsockopt(l, SOL_SOCKET, SO_REUSEADDR, &one, sizeof (int));
+ if (r) {
+ perror("setsockopt");
+ exit(1);
+ }
in.sin_family = AF_INET;
in.sin_port = htons(s51_port);
in.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
in.sin_family = AF_INET;
in.sin_port = htons(s51_port);
in.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
@@
-108,11
+114,6
@@
main(int argc, char **argv)
perror("bind");
exit(1);
}
perror("bind");
exit(1);
}
- r = setsockopt(l, SOL_SOCKET, SO_REUSEADDR, &one, sizeof (int));
- if (r) {
- perror("setsockopt");
- exit(1);
- }
r = listen(l, 5);
if (r) {
perror("listen");
r = listen(l, 5);
if (r) {
perror("listen");
@@
-121,21
+122,23
@@
main(int argc, char **argv)
for (;;) {
struct sockaddr_in client_addr;
socklen_t client_len = sizeof (struct sockaddr_in);
for (;;) {
struct sockaddr_in client_addr;
socklen_t client_len = sizeof (struct sockaddr_in);
- FILE *client;
+ FILE *client
_in, *client_out
;
- s = accept(
r
, (struct sockaddr *)
+ s = accept(
l
, (struct sockaddr *)
&client_addr, &client_len);
if (s < 0) {
perror("accept");
exit(1);
}
&client_addr, &client_len);
if (s < 0) {
perror("accept");
exit(1);
}
- client = fdopen(s, "rw");
- if (!client) {
+ client_in = fdopen(s, "r");
+ client_out = fdopen(s, "w");
+ if (!client_in || !client_out) {
perror("fdopen");
exit(1);
}
perror("fdopen");
exit(1);
}
- command_read(client, client);
- fclose(client);
+ command_read(client_in, client_out);
+ fclose(client_in);
+ fclose(client_out);
}
} else
command_read(console_in, console_out);
}
} else
command_read(console_in, console_out);