chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] 030 release
[elogind.git]
/
udev_lib.c
diff --git
a/udev_lib.c
b/udev_lib.c
index 381492db01feb4bf51f0cf84f7c5250b20759fac..8f6aa4237734a906c609484c0b8e6626cc7ecbc8 100644
(file)
--- a/
udev_lib.c
+++ b/
udev_lib.c
@@
-124,11
+124,13
@@
int file_map(const char *filename, char **buf, size_t *bufsize)
}
if (fstat(fd, &stats) < 0) {
}
if (fstat(fd, &stats) < 0) {
+ close(fd);
return -1;
}
*buf = mmap(NULL, stats.st_size, PROT_READ, MAP_SHARED, fd, 0);
if (*buf == MAP_FAILED) {
return -1;
}
*buf = mmap(NULL, stats.st_size, PROT_READ, MAP_SHARED, fd, 0);
if (*buf == MAP_FAILED) {
+ close(fd);
return -1;
}
*bufsize = stats.st_size;
return -1;
}
*bufsize = stats.st_size;
@@
-152,6
+154,26
@@
size_t buf_get_line(char *buf, size_t buflen, size_t cur)
return count - cur;
}
return count - cur;
}
+void leading_slash(char *path)
+{
+ int len;
+
+ len = strlen(path);
+ if (len > 0 && path[len-1] != '/') {
+ path[len] = '/';
+ path[len+1] = '\0';
+ }
+}
+
+void no_leading_slash(char *path)
+{
+ int len;
+
+ len = strlen(path);
+ if (len > 0 && path[len-1] == '/')
+ path[len-1] = '\0';
+}
+
struct files {
struct list_head list;
char name[NAME_SIZE];
struct files {
struct list_head list;
char name[NAME_SIZE];
@@
-180,7
+202,7
@@
static int file_list_insert(char *filename, struct list_head *file_list)
return 0;
}
return 0;
}
-/* calls function for
file or every file found in
directory */
+/* calls function for
every file found in specified
directory */
int call_foreach_file(int fnct(char *f) , char *dirname, char *suffix)
{
struct dirent *ent;
int call_foreach_file(int fnct(char *f) , char *dirname, char *suffix)
{
struct dirent *ent;