summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen M. Webb <stephen.webb@canonical.com>2011-11-02 09:49:33 -0400
committerStephen M. Webb <stephen.webb@canonical.com>2011-11-02 09:49:33 -0400
commitea1f0900d87508d95269028ec55aa7d482b373b1 (patch)
treea04ff83e9cfc46db7a4b900af9e8227038e302d1
parentcdba43200d1d364c574b1b6202414d2f5667c871 (diff)
Moved null-termination logic from evemu_write() to evemu_extract(), switched from %a scanf modifier to %m.
-rw-r--r--src/evemu.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/evemu.c b/src/evemu.c
index 15cc384..6c84f9d 100644
--- a/src/evemu.c
+++ b/src/evemu.c
@@ -216,7 +216,7 @@ int evemu_extract(struct evemu_device *dev, int fd)
memset(dev, 0, sizeof(*dev));
- SYSCALL(rc = ioctl(fd, EVIOCGNAME(sizeof(dev->name)), dev->name));
+ SYSCALL(rc = ioctl(fd, EVIOCGNAME(sizeof(dev->name)-1), dev->name));
if (rc < 0)
return rc;
@@ -277,13 +277,8 @@ static void write_abs(FILE *fp, int index, const struct input_absinfo *abs)
int evemu_write(const struct evemu_device *dev, FILE *fp)
{
int i;
- char devname[sizeof(dev->name)+1];
- /* devname is the same as dev->name, but guaranteed to be NUL-terminated. */
- memset(devname, 0, sizeof(devname));
- strncpy(devname, dev->name, sizeof(dev->name));
-
- fprintf(fp, "N: %s\n", devname);
+ fprintf(fp, "N: %s\n", dev->name);
fprintf(fp, "I: %04x %04x %04x %04x\n",
dev->id.bustype, dev->id.vendor,
@@ -342,7 +337,7 @@ int evemu_read(struct evemu_device *dev, FILE *fp)
memset(dev, 0, sizeof(*dev));
- ret = fscanf(fp, "N: %as\n", &devname);
+ ret = fscanf(fp, "N: %ms\n", &devname);
if (ret <= 0) {
if (devname != NULL)
free(devname);