Allow the user to specify the compiler via environment variable
[hmcfgusb] / hmland.c
index 8e5d6da..35f8192 100644 (file)
--- a/hmland.c
+++ b/hmland.c
@@ -1,6 +1,6 @@
 /* HM-CFG-LAN emulation for HM-CFG-USB
  *
- * Copyright (c) 2013-15 Michael Gernoth <michael@gernoth.net>
+ * Copyright (c) 2013-16 Michael Gernoth <michael@gernoth.net>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
@@ -47,6 +47,7 @@
 
 #define PID_FILE "/var/run/hmland.pid"
 
+#define POLL_TIMEOUT_MS                250     /* Wake up device/bus at least once every 250ms */
 #define DEFAULT_REBOOT_SECONDS 86400
 #define LAN_READ_CHUNK_SIZE    2048
 /* Don't allow remote clients to consume all of our memory */
@@ -99,7 +100,7 @@ static void print_timestamp(FILE *f)
        fprintf(f, "%s.%06ld: ", ts, tv.tv_usec);
 }
 
-static void write_log(char *buf, int len, char *fmt, ...)
+static void write_log(const char *buf, int len, const char *fmt, ...)
 {
        va_list ap;
        int i;
@@ -141,12 +142,12 @@ static void write_log(char *buf, int len, char *fmt, ...)
                fflush(logfile);
 }
 
-static int format_part_out(uint8_t **inpos, int inlen, uint8_t **outpos, int outlen, int len, int flags)
+static int format_part_out(uint8_t **inpos, int inlen, uint8_t **outpos, int outlen, size_t len, int flags)
 {
        uint8_t *buf_out = *outpos;
        uint8_t *outend = *outpos + outlen;
        uint8_t *inend = *inpos + inlen;
-       int i;
+       size_t i;
 
        if (flags & FLAG_COMMA_BEFORE) {
                CHECK_SPACE(1);
@@ -201,7 +202,7 @@ static int parse_part_in(uint8_t **inpos, int inlen, uint8_t **outpos, int outle
        uint8_t *inend = *inpos + inlen;
 
        if (flags & FLAG_LENGTH_BYTE) {
-               int len = 0;
+               size_t len = 0;
                uint8_t *ip;
 
                ip = *inpos;
@@ -430,6 +431,7 @@ static int hmlan_parse_one(uint8_t *cmd, int last, void *data)
                        parse_part_in(&inpos, (last-(inpos-cmd)), &outpos, (sizeof(out)-(outpos-out)), 0);
                        parse_part_in(&inpos, (last-(inpos-cmd)), &outpos, (sizeof(out)-(outpos-out)), 0);
                        parse_part_in(&inpos, (last-(inpos-cmd)), &outpos, (sizeof(out)-(outpos-out)), FLAG_LENGTH_BYTE);
+                       break;
                default:
                        parse_part_in(&inpos, (last-(inpos-cmd)), &outpos, (sizeof(out)-(outpos-out)), FLAG_IGNORE_COMMAS);
                        break;
@@ -572,7 +574,7 @@ static int comm(int fd_in, int fd_out, int master_socket, int flags)
        while(!quit) {
                int fd;
 
-               fd = hmcfgusb_poll(dev, 1000);  /* Wakeup device/bus at least once a second */
+               fd = hmcfgusb_poll(dev, POLL_TIMEOUT_MS);
                if (fd >= 0) {
                        if (fd == master_socket) {
                                int client;
@@ -652,7 +654,7 @@ static int socket_server(char *iface, int port, int flags)
                                                exit(EXIT_FAILURE);
                                        }
 
-                                       if (fscanf(pidfile, "%u", &old_pid) != 1) {
+                                       if (fscanf(pidfile, "%d", &old_pid) != 1) {
                                                fclose(pidfile);
                                                fprintf(stderr, "Can't read old PID from " PID_FILE ", already running?\n");
                                                exit(EXIT_FAILURE);
@@ -890,7 +892,7 @@ int main(int argc, char **argv)
                                break;
                        case 'V':
                                printf("hmland " VERSION "\n");
-                               printf("Copyright (c) 2013-15 Michael Gernoth\n\n");
+                               printf("Copyright (c) 2013-16 Michael Gernoth\n\n");
                                exit(EXIT_SUCCESS);
                        case 'h':
                        case ':':
Impressum, Datenschutz