summaryrefslogtreecommitdiff
path: root/usr/src/lib/pyzfs
diff options
context:
space:
mode:
authorSam Falkner <Sam.Falkner@Sun.COM>2010-02-25 11:47:05 -0700
committerSam Falkner <Sam.Falkner@Sun.COM>2010-02-25 11:47:05 -0700
commite4d060fb4c00d44cd578713eb9a921f594b733b8 (patch)
treec38276f18cf33dbd25c1451f4d3a92ef8adfc6b3 /usr/src/lib/pyzfs
parente69acc927b15c46de46ae637e53e1b808990a5bc (diff)
downloadillumos-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.com4
-rw-r--r--usr/src/lib/pyzfs/common/ioctl.c82
-rw-r--r--usr/src/lib/pyzfs/common/userspace.py11
-rw-r--r--usr/src/lib/pyzfs/common/util.py10
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."""