mirror of
https://github.com/systemd/systemd.git
synced 2025-02-03 17:47:28 +03:00
libudev: export udev_util_encode_string()
This commit is contained in:
parent
289a1821a4
commit
0bbe8838e7
@ -41,9 +41,9 @@ dist_libexec_SCRIPTS =
|
||||
# ------------------------------------------------------------------------------
|
||||
# libudev
|
||||
# ------------------------------------------------------------------------------
|
||||
LIBUDEV_CURRENT=12
|
||||
LIBUDEV_REVISION=2
|
||||
LIBUDEV_AGE=12
|
||||
LIBUDEV_CURRENT=13
|
||||
LIBUDEV_REVISION=0
|
||||
LIBUDEV_AGE=13
|
||||
|
||||
SUBDIRS += libudev/docs
|
||||
|
||||
|
@ -547,12 +547,12 @@ int main(int argc, char *argv[])
|
||||
memcpy (model, id.model, 40);
|
||||
model[40] = '\0';
|
||||
udev_util_encode_string(model, model_enc, sizeof(model_enc));
|
||||
udev_util_replace_whitespace((char *) id.model, model, 40);
|
||||
udev_util_replace_chars(model, NULL);
|
||||
udev_util_replace_whitespace((char *) id.serial_no, serial, 20);
|
||||
udev_util_replace_chars(serial, NULL);
|
||||
udev_util_replace_whitespace((char *) id.fw_rev, revision, 8);
|
||||
udev_util_replace_chars(revision, NULL);
|
||||
util_replace_whitespace((char *) id.model, model, 40);
|
||||
util_replace_chars(model, NULL);
|
||||
util_replace_whitespace((char *) id.serial_no, serial, 20);
|
||||
util_replace_chars(serial, NULL);
|
||||
util_replace_whitespace((char *) id.fw_rev, revision, 8);
|
||||
util_replace_chars(revision, NULL);
|
||||
|
||||
if (export) {
|
||||
/* Set this to convey the disk speaks the ATA protocol */
|
||||
|
@ -510,13 +510,13 @@ static int set_inq_values(struct udev *udev, struct scsi_id_device *dev_scsi, co
|
||||
udev_util_encode_string(dev_scsi->vendor, vendor_enc_str, sizeof(vendor_enc_str));
|
||||
udev_util_encode_string(dev_scsi->model, model_enc_str, sizeof(model_enc_str));
|
||||
|
||||
udev_util_replace_whitespace(dev_scsi->vendor, vendor_str, sizeof(vendor_str));
|
||||
udev_util_replace_chars(vendor_str, NULL);
|
||||
udev_util_replace_whitespace(dev_scsi->model, model_str, sizeof(model_str));
|
||||
udev_util_replace_chars(model_str, NULL);
|
||||
util_replace_whitespace(dev_scsi->vendor, vendor_str, sizeof(vendor_str));
|
||||
util_replace_chars(vendor_str, NULL);
|
||||
util_replace_whitespace(dev_scsi->model, model_str, sizeof(model_str));
|
||||
util_replace_chars(model_str, NULL);
|
||||
set_type(dev_scsi->type, type_str, sizeof(type_str));
|
||||
udev_util_replace_whitespace(dev_scsi->revision, revision_str, sizeof(revision_str));
|
||||
udev_util_replace_chars(revision_str, NULL);
|
||||
util_replace_whitespace(dev_scsi->revision, revision_str, sizeof(revision_str));
|
||||
util_replace_chars(revision_str, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -560,11 +560,11 @@ static int scsi_id(struct udev *udev, char *maj_min_dev)
|
||||
printf("ID_REVISION=%s\n", revision_str);
|
||||
printf("ID_TYPE=%s\n", type_str);
|
||||
if (dev_scsi.serial[0] != '\0') {
|
||||
udev_util_replace_whitespace(dev_scsi.serial, serial_str, sizeof(serial_str));
|
||||
udev_util_replace_chars(serial_str, NULL);
|
||||
util_replace_whitespace(dev_scsi.serial, serial_str, sizeof(serial_str));
|
||||
util_replace_chars(serial_str, NULL);
|
||||
printf("ID_SERIAL=%s\n", serial_str);
|
||||
udev_util_replace_whitespace(dev_scsi.serial_short, serial_str, sizeof(serial_str));
|
||||
udev_util_replace_chars(serial_str, NULL);
|
||||
util_replace_whitespace(dev_scsi.serial_short, serial_str, sizeof(serial_str));
|
||||
util_replace_chars(serial_str, NULL);
|
||||
printf("ID_SERIAL_SHORT=%s\n", serial_str);
|
||||
}
|
||||
if (dev_scsi.wwn[0] != '\0') {
|
||||
@ -593,8 +593,8 @@ static int scsi_id(struct udev *udev, char *maj_min_dev)
|
||||
if (reformat_serial) {
|
||||
char serial_str[MAX_SERIAL_LEN];
|
||||
|
||||
udev_util_replace_whitespace(dev_scsi.serial, serial_str, sizeof(serial_str));
|
||||
udev_util_replace_chars(serial_str, NULL);
|
||||
util_replace_whitespace(dev_scsi.serial, serial_str, sizeof(serial_str));
|
||||
util_replace_chars(serial_str, NULL);
|
||||
printf("%s\n", serial_str);
|
||||
goto out;
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
<title>libudev Reference Manual</title>
|
||||
<releaseinfo>for libudev version &version;</releaseinfo>
|
||||
<copyright>
|
||||
<year>2009-2010</year>
|
||||
<year>2009-2011</year>
|
||||
<holder>Kay Sievers <kay.sievers@vrfy.org></holder>
|
||||
</copyright>
|
||||
</bookinfo>
|
||||
@ -22,6 +22,7 @@
|
||||
<xi:include href="xml/libudev-monitor.xml"/>
|
||||
<xi:include href="xml/libudev-enumerate.xml"/>
|
||||
<xi:include href="xml/libudev-queue.xml"/>
|
||||
<xi:include href="xml/libudev-util.xml"/>
|
||||
</chapter>
|
||||
|
||||
<index id="api-index-full">
|
||||
|
@ -120,3 +120,8 @@ udev_queue_get_kernel_seqnum
|
||||
udev_queue_get_udev_seqnum
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>libudev-util</FILE>
|
||||
<TITLE>udev_util</TITLE>
|
||||
udev_util_encode_string
|
||||
</SECTION>
|
||||
|
@ -181,9 +181,8 @@ size_t util_strpcpy(char **dest, size_t size, const char *src);
|
||||
size_t util_strpcpyl(char **dest, size_t size, const char *src, ...) __attribute__((sentinel));
|
||||
size_t util_strscpy(char *dest, size_t size, const char *src);
|
||||
size_t util_strscpyl(char *dest, size_t size, const char *src, ...) __attribute__((sentinel));
|
||||
int udev_util_replace_whitespace(const char *str, char *to, size_t len);
|
||||
int udev_util_replace_chars(char *str, const char *white);
|
||||
int udev_util_encode_string(const char *str, char *str_enc, size_t len);
|
||||
int util_replace_whitespace(const char *str, char *to, size_t len);
|
||||
int util_replace_chars(char *str, const char *white);
|
||||
unsigned int util_string_hash32(const char *key);
|
||||
uint64_t util_string_bloom64(const char *str);
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* libudev - interface to udev device information
|
||||
*
|
||||
* Copyright (C) 2008-2009 Kay Sievers <kay.sievers@vrfy.org>
|
||||
* Copyright (C) 2008-2011 Kay Sievers <kay.sievers@vrfy.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -24,6 +24,11 @@
|
||||
#include "libudev.h"
|
||||
#include "libudev-private.h"
|
||||
|
||||
/**
|
||||
* SECTION:libudev-util
|
||||
* @short_description: utils
|
||||
*/
|
||||
|
||||
ssize_t util_get_sys_core_link_value(struct udev *udev, const char *slink, const char *syspath, char *value, size_t size)
|
||||
{
|
||||
char path[UTIL_PATH_SIZE];
|
||||
@ -342,7 +347,7 @@ static int utf8_encoded_valid_unichar(const char *str)
|
||||
return len;
|
||||
}
|
||||
|
||||
int udev_util_replace_whitespace(const char *str, char *to, size_t len)
|
||||
int util_replace_whitespace(const char *str, char *to, size_t len)
|
||||
{
|
||||
size_t i, j;
|
||||
|
||||
@ -382,7 +387,7 @@ static int is_whitelisted(char c, const char *white)
|
||||
}
|
||||
|
||||
/* allow chars in whitelist, plain ascii, hex-escaping and valid utf8 */
|
||||
int udev_util_replace_chars(char *str, const char *white)
|
||||
int util_replace_chars(char *str, const char *white)
|
||||
{
|
||||
size_t i = 0;
|
||||
int replaced = 0;
|
||||
@ -425,18 +430,18 @@ int udev_util_replace_chars(char *str, const char *white)
|
||||
}
|
||||
|
||||
/**
|
||||
* util_encode_string:
|
||||
* udev_util_encode_string:
|
||||
* @str: input string to be encoded
|
||||
* @str_enc: output string to store the encoded input string
|
||||
* @len: maximum size of the output string, which may be
|
||||
* four times as long as the input string
|
||||
*
|
||||
* Encode all potentially unsafe characters of a string to the
|
||||
* corresponding hex value prefixed by '\x'.
|
||||
* corresponding 2 char hex value prefixed by '\x'.
|
||||
*
|
||||
* Returns: 0 if the entire string was copied, non-zero otherwise.
|
||||
**/
|
||||
int udev_util_encode_string(const char *str, char *str_enc, size_t len)
|
||||
UDEV_EXPORT int udev_util_encode_string(const char *str, char *str_enc, size_t len)
|
||||
{
|
||||
size_t i, j;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* libudev - interface to udev device information
|
||||
*
|
||||
* Copyright (C) 2008-2010 Kay Sievers <kay.sievers@vrfy.org>
|
||||
* Copyright (C) 2008-2011 Kay Sievers <kay.sievers@vrfy.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -174,6 +174,14 @@ int udev_queue_get_seqnum_sequence_is_finished(struct udev_queue *udev_queue,
|
||||
unsigned long long int start, unsigned long long int end);
|
||||
struct udev_list_entry *udev_queue_get_queued_list_entry(struct udev_queue *udev_queue);
|
||||
|
||||
/*
|
||||
* udev_util
|
||||
*
|
||||
* udev specific utilities
|
||||
*/
|
||||
int udev_util_encode_string(const char *str, char *str_enc, size_t len);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
@ -350,8 +350,8 @@ static int builtin_usb_id(struct udev_device *dev, bool test)
|
||||
goto fallback;
|
||||
}
|
||||
udev_util_encode_string(scsi_vendor, vendor_str_enc, sizeof(vendor_str_enc));
|
||||
udev_util_replace_whitespace(scsi_vendor, vendor_str, sizeof(vendor_str)-1);
|
||||
udev_util_replace_chars(vendor_str, NULL);
|
||||
util_replace_whitespace(scsi_vendor, vendor_str, sizeof(vendor_str)-1);
|
||||
util_replace_chars(vendor_str, NULL);
|
||||
|
||||
scsi_model = udev_device_get_sysattr_value(dev_scsi, "model");
|
||||
if (!scsi_model) {
|
||||
@ -360,8 +360,8 @@ static int builtin_usb_id(struct udev_device *dev, bool test)
|
||||
goto fallback;
|
||||
}
|
||||
udev_util_encode_string(scsi_model, model_str_enc, sizeof(model_str_enc));
|
||||
udev_util_replace_whitespace(scsi_model, model_str, sizeof(model_str)-1);
|
||||
udev_util_replace_chars(model_str, NULL);
|
||||
util_replace_whitespace(scsi_model, model_str, sizeof(model_str)-1);
|
||||
util_replace_chars(model_str, NULL);
|
||||
|
||||
scsi_type = udev_device_get_sysattr_value(dev_scsi, "type");
|
||||
if (!scsi_type) {
|
||||
@ -377,8 +377,8 @@ static int builtin_usb_id(struct udev_device *dev, bool test)
|
||||
udev_device_get_sysname(dev_scsi));
|
||||
goto fallback;
|
||||
}
|
||||
udev_util_replace_whitespace(scsi_rev, revision_str, sizeof(revision_str)-1);
|
||||
udev_util_replace_chars(revision_str, NULL);
|
||||
util_replace_whitespace(scsi_rev, revision_str, sizeof(revision_str)-1);
|
||||
util_replace_chars(revision_str, NULL);
|
||||
|
||||
/*
|
||||
* some broken devices have the same identifiers
|
||||
@ -403,8 +403,8 @@ fallback:
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
udev_util_encode_string(usb_vendor, vendor_str_enc, sizeof(vendor_str_enc));
|
||||
udev_util_replace_whitespace(usb_vendor, vendor_str, sizeof(vendor_str)-1);
|
||||
udev_util_replace_chars(vendor_str, NULL);
|
||||
util_replace_whitespace(usb_vendor, vendor_str, sizeof(vendor_str)-1);
|
||||
util_replace_chars(vendor_str, NULL);
|
||||
}
|
||||
|
||||
if (model_str[0] == '\0') {
|
||||
@ -418,8 +418,8 @@ fallback:
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
udev_util_encode_string(usb_model, model_str_enc, sizeof(model_str_enc));
|
||||
udev_util_replace_whitespace(usb_model, model_str, sizeof(model_str)-1);
|
||||
udev_util_replace_chars(model_str, NULL);
|
||||
util_replace_whitespace(usb_model, model_str, sizeof(model_str)-1);
|
||||
util_replace_chars(model_str, NULL);
|
||||
}
|
||||
|
||||
if (revision_str[0] == '\0') {
|
||||
@ -427,8 +427,8 @@ fallback:
|
||||
|
||||
usb_rev = udev_device_get_sysattr_value(dev_usb, "bcdDevice");
|
||||
if (usb_rev) {
|
||||
udev_util_replace_whitespace(usb_rev, revision_str, sizeof(revision_str)-1);
|
||||
udev_util_replace_chars(revision_str, NULL);
|
||||
util_replace_whitespace(usb_rev, revision_str, sizeof(revision_str)-1);
|
||||
util_replace_chars(revision_str, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@ -437,8 +437,8 @@ fallback:
|
||||
|
||||
usb_serial = udev_device_get_sysattr_value(dev_usb, "serial");
|
||||
if (usb_serial) {
|
||||
udev_util_replace_whitespace(usb_serial, serial_str, sizeof(serial_str)-1);
|
||||
udev_util_replace_chars(serial_str, NULL);
|
||||
util_replace_whitespace(usb_serial, serial_str, sizeof(serial_str)-1);
|
||||
util_replace_chars(serial_str, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -318,7 +318,7 @@ subst:
|
||||
len = strlen(vbuf);
|
||||
while (len > 0 && isspace(vbuf[--len]))
|
||||
vbuf[len] = '\0';
|
||||
count = udev_util_replace_chars(vbuf, UDEV_ALLOWED_CHARS_INPUT);
|
||||
count = util_replace_chars(vbuf, UDEV_ALLOWED_CHARS_INPUT);
|
||||
if (count > 0)
|
||||
info(event->udev, "%i character(s) replaced\n" , count);
|
||||
l = util_strpcpy(&s, l, vbuf);
|
||||
|
@ -2271,7 +2271,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
|
||||
|
||||
util_remove_trailing_chars(result, '\n');
|
||||
if (esc == ESCAPE_UNSET || esc == ESCAPE_REPLACE) {
|
||||
count = udev_util_replace_chars(result, UDEV_ALLOWED_CHARS_INPUT);
|
||||
count = util_replace_chars(result, UDEV_ALLOWED_CHARS_INPUT);
|
||||
if (count > 0)
|
||||
info(event->udev, "%i character(s) replaced\n" , count);
|
||||
}
|
||||
@ -2562,7 +2562,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
|
||||
event->name_final = true;
|
||||
udev_event_apply_format(event, name, name_str, sizeof(name_str));
|
||||
if (esc == ESCAPE_UNSET || esc == ESCAPE_REPLACE) {
|
||||
count = udev_util_replace_chars(name_str, "/");
|
||||
count = util_replace_chars(name_str, "/");
|
||||
if (count > 0)
|
||||
info(event->udev, "%i character(s) replaced\n", count);
|
||||
}
|
||||
@ -2592,9 +2592,9 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
|
||||
/* allow multiple symlinks separated by spaces */
|
||||
udev_event_apply_format(event, &rules->buf[cur->key.value_off], temp, sizeof(temp));
|
||||
if (esc == ESCAPE_UNSET)
|
||||
count = udev_util_replace_chars(temp, "/ ");
|
||||
count = util_replace_chars(temp, "/ ");
|
||||
else if (esc == ESCAPE_REPLACE)
|
||||
count = udev_util_replace_chars(temp, "/");
|
||||
count = util_replace_chars(temp, "/");
|
||||
if (count > 0)
|
||||
info(event->udev, "%i character(s) replaced\n" , count);
|
||||
dbg(event->udev, "rule applied, added symlink(s) '%s'\n", temp);
|
||||
|
Loading…
x
Reference in New Issue
Block a user