* Fixed whitespace, indentation, bracing style.
authorUrban Wallasch <urban.wallasch@freenet.de>
Sun, 21 Jul 2019 17:14:40 +0000 (19:14 +0200)
committerUrban Wallasch <urban.wallasch@freenet.de>
Sun, 21 Jul 2019 17:14:40 +0000 (19:14 +0200)
* Removed clutter.

shmget.c

index 12b4c923a9866939577fc41f61a5cd2b02dc43a0..690e8695bb3b557cedd09d99150c63575c6a8b43 100644 (file)
--- a/shmget.c
+++ b/shmget.c
 #include "log.h"
 
 
-typedef uint64_t               scs_timestamp_t;
+#define SHM_KEY 0xecc11
 
-/*
- * int shmget(key_t key, size_t size, int shmflg);
- * void *shmat(int shmid, const void *shmaddr, int shmflg);
- * int shmdt(const void *shmaddr);
- * int shmctl(int shmid, int cmd, struct shmid_ds *buf);
-*/
+typedef uint64_t               scs_timestamp_t;
 
 struct telemetry_state_t
 {
-
-       scs_timestamp_t timestamp;
-       scs_timestamp_t raw_rendering_timestamp;
-       scs_timestamp_t raw_simulation_timestamp;
-       scs_timestamp_t raw_paused_simulation_timestamp;
-
-
-       bool    orientation_available;
-       float   heading;
-       float   pitch;
-       float   roll;
-
-       float   speed;
-       float   rpm;
-       int     gear;
-       float   cc; //cruise_control
+    scs_timestamp_t timestamp;
+    scs_timestamp_t raw_rendering_timestamp;
+    scs_timestamp_t raw_simulation_timestamp;
+    scs_timestamp_t raw_paused_simulation_timestamp;
+
+    bool    orientation_available;
+    float   heading;
+    float   pitch;
+    float   roll;
+
+    float   speed;
+    float   rpm;
+    int gear;
+    float   cc; //cruise_control
     float fc_avg; //fuel consumption average
-
 } *telemetry;
 
 static volatile int force_quit;
 
-static void handle_signal(int sig){
+static void handle_signal(int sig) {
     fprintf (stderr, "SIGNAL: %d\n", sig);
     switch (sig){
     case SIGTERM:
@@ -61,212 +53,186 @@ static void handle_signal(int sig){
     }
 }
 
-#define KEY 0xecc11
-
-static int shmputter(void){
-    int shmid;
-    shmid = shmget (KEY, sizeof (struct telemetry_state_t),  IPC_CREAT | IPC_EXCL | 0600);
-    if (shmid < 0) return -1;
-    telemetry = shmat (shmid, NULL, 0);
-    while (!force_quit){
-        if (telemetry -> cc > 10)
-            telemetry -> cc -= 10;
-        else
-            telemetry -> cc += 20;
-        sleep (1);
-    }
-    shmdt (telemetry);
-    shmctl (shmid, IPC_RMID, NULL);
-    return 0;
-}
-
 enum respond_code {
-       r_index,
-       r_json,
-       r_none
+    r_index,
+    r_json,
+    r_none
 };
 
-static void respond(int fd, const char *req, int code){
+static void respond(int fd, const char *req, int code) {
     char buf[4096];
     char origin[256] = "http://localhost";
     char host[256] = "localhost";
     const char *s;
-    switch (code){
-        case r_json:
-        case r_index:
-                       s = strstr(req, "Origin:");
-                       if (s){
-                               s += 8; //strlen("Origin: ");
-                               const char *e = strstr(s, "\r\n");
-                               strncpy(origin, s, e-s);
-                       }
-                       s = strstr(req, "Host:");
-                       if (s){
-                               s += 6;//strlen("Host: ");
-                               const char *e = strstr(s, "\r\n");
-                               strncpy(host, s, e-s);
-                       }
-                       
-            write(fd, buf, sprintf (buf, "HTTP/1.1 200 OK\r\n"));
-            write(fd, buf, sprintf (buf, "Host: %s\r\n", host));
-            if (r_json == code){
-               write(fd, buf, sprintf (buf, "Access-Control-Allow-Origin: %s\r\n", origin));
-               write(fd, buf, sprintf (buf, "Content-type: text/json\r\n"));
-               write(fd, buf, sprintf (buf, "Connection: close\r\n\r\n"));
-               write(fd, buf, sprintf (buf, "{ \"fc_avg\": %3.2f, \"speed\": %3.2f, \"cc\": %3.2f }",
-                                       100.0 * telemetry->fc_avg , telemetry -> speed * 3.6, telemetry -> cc * 3.6));
+    switch (code) {
+    case r_json:
+    case r_index:
+        s = strstr(req, "Origin:");
+        if (s){
+            s += 8; //strlen("Origin: ");
+            const char *e = strstr(s, "\r\n");
+            strncpy(origin, s, e-s);
+        }
+        s = strstr(req, "Host:");
+        if (s){
+            s += 6;//strlen("Host: ");
+            const char *e = strstr(s, "\r\n");
+            strncpy(host, s, e-s);
+        }
+
+        write(fd, buf, sprintf (buf, "HTTP/1.1 200 OK\r\n"));
+        write(fd, buf, sprintf (buf, "Host: %s\r\n", host));
+        if (r_json == code){
+            write(fd, buf, sprintf (buf, "Access-Control-Allow-Origin: %s\r\n", origin));
+            write(fd, buf, sprintf (buf, "Content-type: text/json\r\n"));
+            write(fd, buf, sprintf (buf, "Connection: close\r\n\r\n"));
+            write(fd, buf, sprintf (buf, "{ \"fc_avg\": %3.2f, \"speed\": %3.2f, \"cc\": %3.2f }",
+                        100.0 * telemetry->fc_avg , telemetry -> speed * 3.6, telemetry -> cc * 3.6));
+        } else {
+            struct file_info_t fi;
+            if (0 == fserv_open_server("index.html", &fi)){
+                write(fd, buf, sprintf (buf, "Content-type: text/html\r\n"));
+                write(fd, buf, sprintf (buf, "Connection: close\r\n\r\n"));
+                fserv_sendfile(fd, &fi);
+                fserv_close(&fi);
             } else {
-               struct file_info_t fi;
-               if (0 == fserv_open_server("index.html", &fi)){
-                       write(fd, buf, sprintf (buf, "Content-type: text/html\r\n"));
-                       write(fd, buf, sprintf (buf, "Connection: close\r\n\r\n"));
-                       fserv_sendfile(fd, &fi);
-                       fserv_close(&fi);
-               } else {
-                       write(fd, buf, sprintf (buf, "Content-type: text/plain\r\n"));
-                       write(fd, buf, sprintf (buf, "Connection: close\r\n\r\n"));
-                       write(fd, buf, sprintf (buf, "Tough luck"));
-               }
+                write(fd, buf, sprintf (buf, "Content-type: text/plain\r\n"));
+                write(fd, buf, sprintf (buf, "Connection: close\r\n\r\n"));
+                write(fd, buf, sprintf (buf, "Tough luck"));
             }
-            break;
-        case r_none:
-            write(fd, buf, sprintf (buf, "HTTP/1.1 404 Not Found\r\n"));
-            write(fd, buf, sprintf (buf, "Host: localhost\r\n"));
-            write(fd, buf, sprintf (buf, "Content-type: text/plain\r\n"));
-            write(fd, buf, sprintf (buf, "Connection: close\r\n\r\n"));
-            write(fd, buf, sprintf (buf, "Fuck you 404!"));
-            break;
-        default:
-            write(fd, buf, sprintf (buf, "HTTP/1.1 500 Internal Server Error\r\n"));
-            write(fd, buf, sprintf (buf, "Host: localhost\r\n"));
-            write(fd, buf, sprintf (buf, "Content-type: text/plain\r\n"));
-            write(fd, buf, sprintf (buf, "Connection: close\r\n\r\n"));
-            write(fd, buf, sprintf (buf, "Fuck you 500!"));
-            break;
-
+        }
+        break;
+    case r_none:
+        write(fd, buf, sprintf (buf, "HTTP/1.1 404 Not Found\r\n"));
+        write(fd, buf, sprintf (buf, "Host: localhost\r\n"));
+        write(fd, buf, sprintf (buf, "Content-type: text/plain\r\n"));
+        write(fd, buf, sprintf (buf, "Connection: close\r\n\r\n"));
+        write(fd, buf, sprintf (buf, "Fuck you 404!"));
+        break;
+    default:
+        write(fd, buf, sprintf (buf, "HTTP/1.1 500 Internal Server Error\r\n"));
+        write(fd, buf, sprintf (buf, "Host: localhost\r\n"));
+        write(fd, buf, sprintf (buf, "Content-type: text/plain\r\n"));
+        write(fd, buf, sprintf (buf, "Connection: close\r\n\r\n"));
+        write(fd, buf, sprintf (buf, "Fuck you 500!"));
+        break;
     }
 }
 
-static int receive(int fd, int timeout){
-struct pollfd pe;
-int res;
-pe.fd = fd;
-char buf[2048];
-int bread, total;
+static int receive(int fd, int timeout) {
+    struct pollfd pe;
+    int res;
+    pe.fd = fd;
+    char buf[2048];
+    int bread, total;
 
-total = 0;
-*buf = 0;
-do {
-    pe.events = POLLIN;
-    pe.revents = 0;
-    if( (0 < (res = poll (&pe, 1, timeout))) && pe.revents == POLLIN){
-        errno = 0;
-        bread = read(fd, buf + total, sizeof buf - total);
-        if (bread < 0)
-            switch (errno){
+    total = 0;
+    *buf = 0;
+    do {
+        pe.events = POLLIN;
+        pe.revents = 0;
+        res = poll(&pe, 1, timeout);
+        if ( 0 < res && pe.revents == POLLIN ) {
+            errno = 0;
+            bread = read(fd, buf + total, sizeof buf - total);
+            if ( 0 > bread ) {
+                switch (errno) {
                 case EAGAIN:
                 //case EWOULDBLOCK:
                 case EINTR:
                     break;
-
                 default:
                     res = -1;
                     break;
-        } else
-        if (0 == bread && 0 == errno) { res = -1; }
-        else {
-            total += bread;
-            buf[total] = 0;
-            if (strstr(buf, "\r\n\r\n")){
-                fprintf (stderr, "%s", buf);
-                if (0 == strncmp(buf, "GET /json HTTP", 10))
-                    respond(fd, buf, r_json);
-                else
-                   if (0 == strncmp(buf, "GET / HTTP", 10))
-                       respond(fd, buf, r_index);
-                   else
-                       respond(fd, NULL, r_none);
-                *buf = 0;
-                res = 0;
+                }
+            }
+            else if ( 0 == bread && 0 == errno ) {
+                res = -1;
+            }
+            else {
+                total += bread;
+                buf[total] = 0;
+                if ( strstr(buf, "\r\n\r\n" ) ) {
+                    fprintf (stderr, "%s", buf);
+                    if (0 == strncmp(buf, "GET /json HTTP", 10))
+                        respond(fd, buf, r_json);
+                    else if (0 == strncmp(buf, "GET / HTTP", 10))
+                        respond(fd, buf, r_index);
+                    else
+                        respond(fd, NULL, r_none);
+                    *buf = 0;
+                    res = 0;
+                }
             }
         }
-    }
-    timeout = 200;
-} while ((1 == res) && (pe.revents == POLLIN) && !force_quit);
-return res;
+        timeout = 200;
+    } while ( 1 == res && pe.revents == POLLIN && !force_quit );
+    return res;
 }
 
-static void *handle_conn( void *p ){
+static void *handle_conn( void *p ) {
     int sock = *(int*)p;
     int err;
 
-    DPRINT ("sock: %d\n", sock);
+    DPRINT( "sock: %d\n", sock );
     do {
-        err = receive (sock, 1000);
-    } while (err > 0 && !force_quit);
-
+        err = receive(sock, 1000);
+    } while ( 0 < err && !force_quit );
     net_close( sock );
     return p;
 }
 
-static int shmgetter(void){
+static int shmgetter(void) {
     int ret;
     int shmid;
     int as, ss;
-
     pthread_t tid;
     pthread_attr_t attr;
 
-    shmid = shmget (KEY, sizeof (struct telemetry_state_t),  0);
-    if (shmid < 0) {
-       EPRINT( "shmget failed\n" );
+    shmid = shmget(SHM_KEY, sizeof *telemetry,  0);
+    if ( 0 > shmid ) {
+        EPRINT( "shmget failed\n" );
         ret = -1;
         goto err_shmget;
     }
 
-    telemetry = shmat (shmid, NULL, SHM_RDONLY);
-       if ((void *) -1 == telemetry){
-               EPRINT( "shmget failed\n" );
-               ret = -2;
-               goto err_shmat;
-       }
+    telemetry = shmat(shmid, NULL, SHM_RDONLY);
+    if ((void *)-1 == telemetry) {
+        EPRINT( "shmget failed\n" );
+        ret = -2;
+        goto err_shmat;
+    }
 
     ss = net_open_server( 8837, "*" );
-       if ( ss < 0 )
-       {
-               EPRINT( "net_open_server failed!\n" );
+    if ( ss < 0 ) {
+        EPRINT( "net_open_server failed!\n" );
         ret = -3;
-               goto err_open_server;
-       }
+        goto err_open_server;
+    }
 
-    while (!force_quit){
-        if ((as = net_accept( ss )) > 0){
-              pthread_attr_init(&attr);
-              pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-              pthread_create(&tid, &attr, handle_conn, &as);
-              usleep (100);
+    while ( !force_quit ) {
+        if ( (as = net_accept( ss )) > 0 ) {
+            pthread_attr_init(&attr);
+            pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+            pthread_create(&tid, &attr, handle_conn, &as);
+            usleep (100);
         }
     }
 
 err_open_server:
 err_shmat:
-    shmdt (telemetry);
+    shmdt(telemetry);
 err_shmget:
     return ret;
 }
 
-
-int main(int argc, char *argv[]){
+int main(int argc, char *argv[]) {
     int res;
-       //install signal handlers
+
+    //install signal handlers
     signal(SIGTERM, handle_signal);
     signal(SIGINT,  handle_signal);
-
-    if (strstr(argv[0], "shmput")){
-        res = shmputter();
-    } else {
-        res = shmgetter();
-    }
+    res = shmgetter();
     puts("");
     return res;
 }