sistema_progs

Programas para customizar o meu entorno de traballo nos meus equipos persoais
Log | Files | Refs

init-msleep.c (1027B)


      1 // For Cygwin and MSYS
      2 #include <stdlib.h>
      3 #include <stdio.h>
      4 #include <math.h>
      5 #include <time.h>
      6 #include <errno.h>
      7 
      8 #define BUILTIN_ENABLED 0x01
      9 struct word_desc { char* word; int flags; };
     10 struct word_list { struct word_list* next; struct word_desc* word; };
     11 struct builtin {
     12   const char* name;
     13   int (*function)(struct word_list*);
     14   int flags;
     15   const char** long_doc;
     16   const char* short_doc;
     17   char* handle;
     18 };
     19 
     20 static int msleep_builtin(struct word_list* list) {
     21   if (!list || !list->word) return 2;
     22   double value = atof(list->word->word) * 0.001;
     23   if (value < 0.0) return 2;
     24   if (value == 0.0) return 0;
     25   struct timespec tv;
     26   tv.tv_sec = floor(value);
     27   tv.tv_nsec = floor((value - floor(value)) * 1e9);
     28   while (nanosleep(&tv, &tv) == -1 && errno == EINTR);
     29   return 0;
     30 }
     31 static const char* msleep_doc[] = { "This is a builtin for ble.sh. Sleep for 'msec' milliseconds.", 0 };
     32 struct builtin msleep_struct = { "ble/builtin/msleep", msleep_builtin, BUILTIN_ENABLED, msleep_doc, "ble/builtin/msleep msec", 0, };