diff options
author | Sam Falkner <Sam.Falkner@Sun.COM> | 2010-02-25 11:47:05 -0700 |
---|---|---|
committer | Sam Falkner <Sam.Falkner@Sun.COM> | 2010-02-25 11:47:05 -0700 |
commit | e4d060fb4c00d44cd578713eb9a921f594b733b8 (patch) | |
tree | c38276f18cf33dbd25c1451f4d3a92ef8adfc6b3 /usr/src/lib/pyzfs | |
parent | e69acc927b15c46de46ae637e53e1b808990a5bc (diff) | |
download | illumos-gate-e4d060fb4c00d44cd578713eb9a921f594b733b8.tar.gz |
6895223 zfs userspace/groupspace/allow/unallow/holds IOError in Japanese locale
Diffstat (limited to 'usr/src/lib/pyzfs')
-rw-r--r-- | usr/src/lib/pyzfs/Makefile.com | 4 | ||||
-rw-r--r-- | usr/src/lib/pyzfs/common/ioctl.c | 82 | ||||
-rw-r--r-- | usr/src/lib/pyzfs/common/userspace.py | 11 | ||||
-rw-r--r-- | usr/src/lib/pyzfs/common/util.py | 10 |
4 files changed, 16 insertions, 91 deletions
diff --git a/usr/src/lib/pyzfs/Makefile.com b/usr/src/lib/pyzfs/Makefile.com index ca327f6931..dd23ae43d4 100644 --- a/usr/src/lib/pyzfs/Makefile.com +++ b/usr/src/lib/pyzfs/Makefile.com @@ -19,7 +19,7 @@ # CDDL HEADER END # # -# Copyright 2009 Sun Microsystems, Inc. All rights reserved. +# Copyright 2010 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # @@ -45,7 +45,7 @@ C99MODE= -xc99=%all C99LMODE= -Xc99=%all LIBS = $(DYNLIB) -LDLIBS += -lc -lnvpair -lsec -lidmap -lpython2.4 -lzfs +LDLIBS += -lc -lnvpair -lpython2.4 -lzfs CFLAGS += $(CCVERBOSE) CPPFLAGS += -I/usr/include/python2.4 CPPFLAGS += -I../../../uts/common/fs/zfs diff --git a/usr/src/lib/pyzfs/common/ioctl.c b/usr/src/lib/pyzfs/common/ioctl.c index 0c838abcb4..d8c0d18679 100644 --- a/usr/src/lib/pyzfs/common/ioctl.c +++ b/usr/src/lib/pyzfs/common/ioctl.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -29,11 +29,8 @@ #include <strings.h> #include <unistd.h> #include <libnvpair.h> -#include <idmap.h> -#include <zone.h> #include <libintl.h> #include <libzfs.h> -#include <directory.h> #include "zfs_prop.h" static PyObject *ZFSError; @@ -45,8 +42,6 @@ static int zfsdevfd; #define _(s) dgettext(TEXT_DOMAIN, s) -extern int sid_to_id(char *sid, boolean_t user, uid_t *id); - /*PRINTFLIKE1*/ static void seterr(char *fmt, ...) @@ -456,75 +451,6 @@ py_userspace_upgrade(PyObject *self, PyObject *args) } static PyObject * -py_sid_to_id(PyObject *self, PyObject *args) -{ - char *sid; - int err, isuser; - uid_t id; - - if (!PyArg_ParseTuple(args, "si", &sid, &isuser)) - return (NULL); - - err = sid_to_id(sid, isuser, &id); - if (err) { - PyErr_SetString(PyExc_KeyError, sid); - return (NULL); - } - - return (Py_BuildValue("I", id)); -} - -/* - * Translate the sid string ("S-1-...") to the user@domain name, if - * possible. - */ -static PyObject * -py_sid_to_name(PyObject *self, PyObject *args) -{ - int isuser; - char *name, *sid; - directory_error_t e; - uint64_t classes; - PyObject *ret; - - if (!PyArg_ParseTuple(args, "si", &sid, &isuser)) - return (NULL); - e = directory_name_from_sid(NULL, sid, &name, &classes); - if (e != NULL) { - directory_error_free(e); - PyErr_SetString(PyExc_KeyError, sid); - return (NULL); - } - if (name == NULL) { - PyErr_SetString(PyExc_KeyError, sid); - return (NULL); - } - if (isuser) { - if (!(classes & DIRECTORY_CLASS_USER)) { - free(name); - PyErr_SetString(PyExc_KeyError, sid); - return (NULL); - } - } else { - if (!(classes & DIRECTORY_CLASS_GROUP)) { - free(name); - PyErr_SetString(PyExc_KeyError, sid); - return (NULL); - } - } - - ret = PyString_FromString(name); - free(name); - return (ret); -} - -static PyObject * -py_isglobalzone(PyObject *self, PyObject *args) -{ - return (Py_BuildValue("i", getzoneid() == GLOBAL_ZONEID)); -} - -static PyObject * py_set_cmdstr(PyObject *self, PyObject *args) { char *str; @@ -595,12 +521,6 @@ static PyMethodDef zfsmethods[] = { "Get dataset properties."}, {"get_proptable", py_get_proptable, METH_NOARGS, "Get property table."}, - /* Below are not really zfs-specific: */ - {"sid_to_id", py_sid_to_id, METH_VARARGS, "Map SID to UID/GID."}, - {"sid_to_name", py_sid_to_name, METH_VARARGS, - "Map SID to name@domain."}, - {"isglobalzone", py_isglobalzone, METH_NOARGS, - "Determine if this is the global zone."}, {"get_holds", py_get_holds, METH_VARARGS, "Get user holds."}, {NULL, NULL, 0, NULL} }; diff --git a/usr/src/lib/pyzfs/common/userspace.py b/usr/src/lib/pyzfs/common/userspace.py index 6444dbc8c1..16a4f4cafb 100644 --- a/usr/src/lib/pyzfs/common/userspace.py +++ b/usr/src/lib/pyzfs/common/userspace.py @@ -19,7 +19,7 @@ # # CDDL HEADER END # -# Copyright 2009 Sun Microsystems, Inc. All rights reserved. +# Copyright 2010 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # @@ -31,6 +31,7 @@ import sys import pwd import grp import errno +import solaris.misc import zfs.util import zfs.ioctl import zfs.dataset @@ -68,9 +69,9 @@ def new_entry(options, isgroup, domain, rid): idstr = "%u" % rid (typename, mapfunc) = { - (1, 1): ("SMB Group", lambda id: zfs.ioctl.sid_to_name(id, 0)), + (1, 1): ("SMB Group", lambda id: solaris.misc.sid_to_name(id, 0)), (1, 0): ("POSIX Group", lambda id: grp.getgrgid(int(id)).gr_name), - (0, 1): ("SMB User", lambda id: zfs.ioctl.sid_to_name(id, 1)), + (0, 1): ("SMB User", lambda id: solaris.misc.sid_to_name(id, 1)), (0, 0): ("POSIX User", lambda id: pwd.getpwuid(int(id)).pw_name) }[isgroup, bool(domain)] @@ -109,7 +110,7 @@ def process_one_raw(acct, options, prop, elem): if options.translate and domain: try: - rid = zfs.ioctl.sid_to_id("%s-%u" % (domain, rid), + rid = solaris.misc.sid_to_id("%s-%u" % (domain, rid), not isgroup) domain = None except KeyError: @@ -203,7 +204,7 @@ def do_userspace(): ds = zfs.dataset.Dataset(dsname, types=("filesystem")) - if ds.getprop("zoned") and zfs.ioctl.isglobalzone(): + if ds.getprop("zoned") and solaris.misc.isglobalzone(): options.noname = True if not ds.getprop("useraccounting"): diff --git a/usr/src/lib/pyzfs/common/util.py b/usr/src/lib/pyzfs/common/util.py index 14d05a8bc1..5ff8d0e751 100644 --- a/usr/src/lib/pyzfs/common/util.py +++ b/usr/src/lib/pyzfs/common/util.py @@ -19,7 +19,7 @@ # # CDDL HEADER END # -# Copyright 2009 Sun Microsystems, Inc. All rights reserved. +# Copyright 2010 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # @@ -29,6 +29,7 @@ zfs.util.dev -- a file object of /dev/zfs """ import gettext import errno import os +import solaris.misc # Note: this module (zfs.util) should not import zfs.ioctl, because that # would introduce a circular dependency @@ -37,8 +38,11 @@ errno.ENOTSUP = 48 dev = open("/dev/zfs", "w") -_ = gettext.translation("SUNW_OST_OSLIB", "/usr/lib/locale", - fallback=True).gettext +try: + _ = gettext.translation("SUNW_OST_OSLIB", "/usr/lib/locale", + fallback=True).gettext +except: + _ = solaris.misc.gettext def default_repr(self): """A simple __repr__ function.""" |