chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Makefile: remove all the duplicated rules
[elogind.git]
/
extras
/
volume_id
/
vol_id.c
diff --git
a/extras/volume_id/vol_id.c
b/extras/volume_id/vol_id.c
index 451fd355c1ad10cbe5714fadfcce14ee55818ea5..3c75bdaa2f524b32d380c42cec7f4e81ba78da58 100644
(file)
--- a/
extras/volume_id/vol_id.c
+++ b/
extras/volume_id/vol_id.c
@@
-32,7
+32,6
@@
#include "../../udev_utils.h"
#include "../../logging.h"
#include "volume_id/volume_id.h"
#include "../../udev_utils.h"
#include "../../logging.h"
#include "volume_id/volume_id.h"
-#include "volume_id/dasd.h"
#define BLKGETSIZE64 _IOR(0x12,114,size_t)
#define BLKGETSIZE64 _IOR(0x12,114,size_t)
@@
-61,31
+60,34
@@
void log_message(int priority, const char *format, ...)
}
#endif
}
#endif
-static void set_str(char *to, const
unsigned char *from, in
t count)
+static void set_str(char *to, const
char *from, size_
t count)
{
{
- int i, j;
- int len;
+ size_t i, j, len;
+ /* strip trailing whitespace */
len = strnlen(from, count);
len = strnlen(from, count);
- while (isspace(from[len-1]))
+ while (
len &&
isspace(from[len-1]))
len--;
len--;
+ /* strip leading whitespace */
i = 0;
while (isspace(from[i]) && (i < len))
i++;
j = 0;
while (i < len) {
i = 0;
while (isspace(from[i]) && (i < len))
i++;
j = 0;
while (i < len) {
- switch(from[i]) {
- case '/':
- break;
- case ' ':
+ /* substitute multiple whitespace */
+ if (isspace(from[i])) {
+ while (isspace(from[i]))
+ i++;
to[j++] = '_';
to[j++] = '_';
- break;
- default:
- to[j++] = from[i];
}
}
- i++;
+ /* skip chars */
+ if (from[i] == '/') {
+ i++;
+ continue;
+ }
+ to[j++] = from[i++];
}
to[j] = '\0';
}
}
to[j] = '\0';
}
@@
-107,7
+109,7
@@
int main(int argc, char *argv[])
struct volume_id *vid = NULL;
static char name[VOLUME_ID_LABEL_SIZE];
int i;
struct volume_id *vid = NULL;
static char name[VOLUME_ID_LABEL_SIZE];
int i;
- u
nsigned long long
size;
+ u
int64_t
size;
const char *node = NULL;
int rc = 0;
const char *node = NULL;
int rc = 0;
@@
-136,7
+138,7
@@
int main(int argc, char *argv[])
vid = volume_id_open_node(node);
if (vid == NULL) {
vid = volume_id_open_node(node);
if (vid == NULL) {
- fprintf(stderr, "
error open volume\n"
);
+ fprintf(stderr, "
%s: error open volume\n", node
);
rc = 2;
goto exit;
}
rc = 2;
goto exit;
}
@@
-147,15
+149,14
@@
int main(int argc, char *argv[])
if (volume_id_probe_all(vid, 0, size) == 0)
goto print;
if (volume_id_probe_all(vid, 0, size) == 0)
goto print;
- if (volume_id_probe_dasd(vid) == 0)
- goto print;
-
- fprintf(stderr, "unknown volume type\n");
+ if (print != PRINT_EXPORT)
+ fprintf(stderr, "%s: unknown volume type\n", node);
rc = 3;
goto exit;
print:
set_str(name, vid->label, sizeof(vid->label));
rc = 3;
goto exit;
print:
set_str(name, vid->label, sizeof(vid->label));
+ replace_untrusted_chars(name);
switch (print) {
case PRINT_EXPORT:
switch (print) {
case PRINT_EXPORT: