void openSystemLog (void) { #if defined(WINDOWS) if (windowsEventLog == INVALID_HANDLE_VALUE) { windowsEventLog = RegisterEventSource(NULL, PACKAGE_TARNAME); } #elif defined(__MSDOS__) if (!logFile) { char *path = makeWritablePath(PACKAGE_TARNAME ".log"); if (path) { openLogFile(path); free(path); } } #elif defined(__ANDROID__) #elif defined(HAVE_SYSLOG_H) if (!syslogOpened) { openlog(PACKAGE_TARNAME, LOG_PID, LOG_DAEMON); syslogOpened = 1; } #endif /* open system log */ }
static char * usbGetFileSystem (const char *type, const FileSystemCandidate *candidates, MountPointTester test, FileSystemVerifier verify) { if (candidates) { const FileSystemCandidate *candidate = candidates; while (candidate->path) { logMessage(LOG_DEBUG, "verifying file system path: %s: %s", type, candidate->path); if (candidate->verify(candidate->path)) { char *path = strdup(candidate->path); if (path) return path; logMallocError(); } candidate += 1; } } if (test) { char *path = findMountPoint(test); if (path) return path; } if (verify) { char *directory = makeWritablePath(type); if (directory) { if (ensureDirectory(directory)) { if (verify(directory)) return directory; { const char *strings[] = {PACKAGE_NAME, "-", type}; char *name = joinStrings(strings, ARRAY_COUNT(strings)); if (makeMountPoint(directory, name, type)) return directory; } } free(directory); } } return NULL; }
int openCharacterDevice (const char *name, int flags, int major, int minor) { char *path = getDevicePath(name); int descriptor; if (!path) { descriptor = -1; } else if ((descriptor = open(path, flags)) != -1) { logMessage(LOG_DEBUG, "device opened: %s: fd=%d", path, descriptor); } else { logMessage(LOG_DEBUG, "cannot open device: %s: %s", path, strerror(errno)); if (errno == ENOENT) { free(path); if ((path = makeWritablePath(locatePathName(name)))) { if ((descriptor = open(path, flags)) != -1) { logMessage(LOG_DEBUG, "device opened: %s: fd=%d", path, descriptor); } else { logMessage(LOG_DEBUG, "cannot open device: %s: %s", path, strerror(errno)); if (errno == ENOENT) { mode_t mode = S_IFCHR | S_IRUSR | S_IWUSR; if (mknod(path, mode, makedev(major, minor)) == -1) { logMessage(LOG_DEBUG, "cannot create device: %s: %s", path, strerror(errno)); } else { logMessage(LOG_DEBUG, "device created: %s mode=%06o major=%d minor=%d", path, mode, major, minor); if ((descriptor = open(path, flags)) != -1) { logMessage(LOG_DEBUG, "device opened: %s: fd=%d", path, descriptor); } else { logMessage(LOG_DEBUG, "cannot open device: %s: %s", path, strerror(errno)); } } } } } } } if (descriptor != -1) { int ok = 0; struct stat status; if (fstat(descriptor, &status) == -1) { logMessage(LOG_DEBUG, "cannot fstat device: %d [%s]: %s", descriptor, path, strerror(errno)); } else if (!S_ISCHR(status.st_mode)) { logMessage(LOG_DEBUG, "not a character device: %s: fd=%d", path, descriptor); } else { ok = 1; } if (!ok) { close(descriptor); logMessage(LOG_DEBUG, "device closed: %s: fd=%d", path, descriptor); descriptor = -1; } } if (path) free(path); return descriptor; }