X-Git-Url: https://git.jankratochvil.net/?a=blobdiff_plain;f=common%2Fmisc.c;h=dc7f332b11d3c7ed29b831bf4ecccfdfb9f46f10;hb=fa4bbfb479b647a80bf40eb7469ac16b34016499;hp=29d881a91c17b8c9c1e277a83b6dd669a251eadc;hpb=43f66b7662ed5c83d1cfefb84b122499b08675c3;p=gnokii.git diff --git a/common/misc.c b/common/misc.c index 29d881a..dc7f332 100644 --- a/common/misc.c +++ b/common/misc.c @@ -159,93 +159,3 @@ void txhexdump(u16 MessageLength, u8 *MessageBuffer) fflush(stdout); } #endif - -#ifndef WIN32 - -#ifndef UCLINUX - -#define max_buf_len 128 -#define lock_path "/var/lock/LCK.." - -/* Lock the device. Return allocated string with a lock name */ -char *lock_device(const char* port) -{ - char *lock_file = NULL; - char buffer[max_buf_len]; - char *aux = rindex(port, '/'); - int fd, len = strlen(aux) + strlen(lock_path); - - memset(buffer, 0, sizeof(buffer)); - lock_file = calloc(len + 1, 1); - if (!lock_file) { - fprintf(stderr, _("Cannot lock device\n")); - return NULL; - } - /* I think we don't need to use strncpy, as we should have enough - * buffer due to strlen results - */ - strcpy(lock_file, lock_path); - strcat(lock_file, aux); - - /* Check for the stale lockfile. - * The code taken from minicom by Miquel van Smoorenburg */ - if ((fd = open(lock_file, O_RDONLY)) >= 0) { - char buf[max_buf_len]; - int pid, n = 0; - - n = read(fd, buf, sizeof(buf) - 1); - close(fd); - if (n > 0) { - pid = -1; - if (n == 4) - /* Kermit-style lockfile. */ - pid = *(int *)buf; - else { - /* Ascii lockfile. */ - buf[n] = 0; - sscanf(buf, "%d", &pid); - } - if (pid > 0 && kill((pid_t)pid, 0) < 0 && errno == ESRCH) { - fprintf(stderr, _("Lockfile is stale. Overriding it..\n")); - sleep(1); - unlink(lock_file); - } else - n = 0; - } - if (n == 0) { - free(lock_file); - fprintf(stderr, _("Device is already locked.\n")); - return NULL; - } - } - - /* Try to create a new file, with 0644 mode */ - fd = open(lock_file, O_CREAT | O_EXCL, 0644); - if (fd == -1) { - free(lock_file); - fprintf(stderr, _("Cannot lock device\n")); - return NULL; - } - sprintf(buffer, "%10ld gnokii\n", (long)getpid()); - write(fd, buffer, strlen(buffer)); - close(fd); - return lock_file; -} - -/* Removes lock and frees memory */ -static bool unlock_device(char *lock_file) -{ - int err; - - if (!lock_file) { - fprintf(stderr, _("Cannot unlock device\n")); - return false; - } - err = unlink(lock_file); - free(lock_file); - return (err + 1); -} - -#endif /* UCLINUX */ - -#endif /* WIN32 */