[Libsysio-commit] HEAD: libsysio/src init.c
Brought to you by:
lward
From: Lee W. <lw...@us...> - 2008-06-17 15:11:44
|
Update of /cvsroot/libsysio/libsysio/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30094 Modified Files: init.c Log Message: Fixed a bug in parse_mm. It was building the dev_t by hand, incorrectly. It should have been using SYSIO_MKDEV. It does now. Index: init.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/init.c,v retrieving revision 1.39 retrieving revision 1.40 diff -u -w -b -B -p -r1.39 -r1.40 --- init.c 26 Sep 2007 19:46:25 -0000 1.39 +++ init.c 17 Jun 2008 15:11:40 -0000 1.40 @@ -62,6 +62,9 @@ #ifdef STDFD_DEV #include "stdfd.h" #endif +#ifdef STDDEV_DEV +#include "stddev.h" +#endif /* * White space characters. @@ -222,6 +225,11 @@ _sysio_init() if (err) goto error; #endif +#ifdef STDDEV_DEV + err = _sysio_stddev_init(); + if (err) + goto error; +#endif #ifdef WITH_SOCKETS err = _sysio_sockets_init(); if (err) @@ -368,18 +376,22 @@ parse_mm(const char *s, dev_t *devp) { unsigned long ul; char *cp; - dev_t dev; + dev_t major, minor; ul = strtoul(s, &cp, 0); if (*cp != '+' || ul > USHRT_MAX) return -EINVAL; - dev = ul << 16; + major = ul; + if (major != ul) + return -ERANGE; s = (const char *)++cp; ul = strtoul(s, &cp, 0); if (*cp != '\0' || ul > USHRT_MAX) return -EINVAL; - dev |= ul & 0xffff; - *devp = dev; + minor = ul; + if (minor != ul) + return -ERANGE; + *devp = SYSIO_MKDEV(major, minor); return 0; } |