update
authorMart Lubbers <mart@martlubbers.net>
Wed, 4 Jan 2017 15:58:41 +0000 (16:58 +0100)
committerMart Lubbers <mart@martlubbers.net>
Wed, 4 Jan 2017 15:58:41 +0000 (16:58 +0100)
int/main.c
int/sds.c
mTaskInterpret.icl

index e7a8f22..43911bc 100644 (file)
@@ -79,6 +79,8 @@ void read_message(int fd_in, int fd_out)
                c = task_register(fd_in);
                write(fd_out, &c, 1);
                break;
+       case '\n':
+               break;
        case '\0':
                debug("iTasks server shut down\n");
                exit(EXIT_SUCCESS);
@@ -99,9 +101,9 @@ void open_filedescriptors()
        if((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
                pdie("socket");
        if(bind(sock_fd, (struct sockaddr*)&sa, sizeof(sa)) == -1)
-               pdie("bind\n");
+               pdie("bind");
        if(listen(sock_fd, 10) == -1)
-               pdie("bind\n");
+               pdie("listen");
 
        printf("Listening on %d\n", port);
        fflush(stdout);
@@ -150,6 +152,7 @@ int main(int argc, char *argv[])
        }
 
        open_filedescriptors();
+       write(fd, "\n", 1);
 
        long cyclestart;
        struct task *curtask;
index 679ce42..ff37af3 100644 (file)
--- a/int/sds.c
+++ b/int/sds.c
@@ -60,10 +60,10 @@ bool sds_update(int fd)
 void sds_publish(int id, int fd)
 {
        uint8_t cs;
+       char msg[6];
        for(cs = 0; cs<MAXSDSS; cs++){
                if(sdss[cs].used && sdss[cs].id == id){
                        debug("Publish %d=%d\n", sdss[cs].id, sdss[cs].value);
-                       char msg[6];
                        sprintf(msg, "s%c%c%c\n",
                                sdss[cs].id,
                                sdss[cs].value/265,
@@ -95,5 +95,4 @@ void sds_store(int id, int val)
                }
        }
        debug("SDS identifier unknown: %d\n", id);
-
 }
index 4c8e43e..0d4de17 100644 (file)
@@ -195,9 +195,10 @@ Start = getSDSBytes (snd bc`) +++ getTaskBytes 400 (fst bc`)
 //Start = fst $ toReadableByteCode $ unMain bc
        where
                bc` = toRealByteCode (unMain bc)
-               bc :: Main (ByteCode Int Stmt)
-               bc = sds \x=41 In 
-                       {main = x =. x +. lit 1 :. pub x}
+//             bc :: Main (ByteCode Int Stmt)
+               bc = sds \x=5 In 
+                       sds \y=4 In
+                       {main = If (y ==. lit 0) (pub x) (x =. x *. y :. y =. y -. lit 1)}
 
 pub :: (ByteCode a b) -> ByteCode a b
 pub x = fmp makePub x