]> Nishi Git Mirror - dataworks.git/commitdiff
auto disconnect
authornishi <nishi@d4a5a174-5a4a-5b4b-b672-37683c10d7d5>
Thu, 13 Jun 2024 06:03:39 +0000 (06:03 +0000)
committernishi <nishi@d4a5a174-5a4a-5b4b-b672-37683c10d7d5>
Thu, 13 Jun 2024 06:03:39 +0000 (06:03 +0000)
git-svn-id: file:///raid/svn-main/nishi-dataworks/trunk@294 d4a5a174-5a4a-5b4b-b672-37683c10d7d5

RemoteClient/hayes.c
RemoteClient/rcli.c
RemoteClient/tcpip.c

index 897fc5b75be097ddff062a9f022f8961237677a3..540839f6a6f4e8dac4dc8d10623aa6d7cbcf8dad 100644 (file)
@@ -47,7 +47,7 @@ bool connected = false;
 
 bool option(const char* str, const char* shortopt, const char* longopt);
 
-void disconnect(int sock);
+void disconnect(void);
 
 int get_ioport() {
 #ifdef PC98
@@ -180,7 +180,7 @@ int rcli_init(void) {
        return 0;
 }
 
-void disconnect(int sock) {
+void disconnect(void) {
        while((inp(get_ioport() + 5) & 0x20) == 0)
                ;
        delay(100);
index 6ed5adb289f227062e3fad6a3571fa8a48903329..e2543995927cd34901b755d74959d3c37d4b64ef 100644 (file)
@@ -42,6 +42,7 @@ char** argv;
 int rcli_init(void);
 char* readline_sock(void);
 void writeline(const char*);
+void disconnect(void);
 
 bool option(const char* str, const char* shortopt, const char* longopt) {
        char* dos_shortopt = __dw_strcat("/", shortopt);
@@ -57,6 +58,7 @@ int main(int _argc, char** _argv) {
        argc = _argc;
        argv = _argv;
        int st = rcli_init();
+       bool ready = false;
        if(st != 0) return st;
        while(1) {
                char* resp = readline_sock();
@@ -75,6 +77,8 @@ int main(int _argc, char** _argv) {
                char* arg = has_arg ? resp + i + 1 : NULL;
                if(__dw_strcaseequ(resp, "READY")) {
                        printf("Connection is ready\n");
+                       ready = true;
+                       break;
                } else if(__dw_strcaseequ(resp, "ATTR") && has_arg) {
                        int start = 0;
                        for(i = 0;; i++) {
@@ -105,5 +109,13 @@ int main(int _argc, char** _argv) {
                }
                free(resp);
        }
+       if(ready){
+               writeline("QUIT");
+               while(true){
+                       char* resp = readline_sock();
+                       if(resp == NULL) break;
+                       free(resp);
+               }
+       }
        return 0;
 }
index 08414391ef198548b9142d6b177c075d0ad6910f..2326f9b9513589b40cb947c3295cb383fc84bec4 100644 (file)
@@ -63,7 +63,7 @@ int rcli_init(void) {
        return 0;
 }
 
-void disconnect(int sock) {}
+void disconnect(void) {}
 
 char* readline_sock(void) { return NULL; }