*.c: Separate string function calls according to text/binary usage.
[catacomb-python] / key.c
diff --git a/key.c b/key.c
index 368456c..704466f 100644 (file)
--- a/key.c
+++ b/key.c
@@ -51,7 +51,7 @@ static PyObject *kxmeth___init__(PyObject *me, PyObject *arg)
   if (PyObject_SetAttrString(me, "err", x)) goto end;
   Py_DECREF(x); x = 0;
 
-  x = PyString_FromString(key_strerror(err)); if (!x) goto end;
+  x = TEXT_FROMSTR(key_strerror(err)); if (!x) goto end;
   if (PyObject_SetAttrString(me, "errstring", x)) goto end;
   Py_DECREF(x); x = 0;
 
@@ -87,9 +87,9 @@ static PyObject *kxmeth___str__(PyObject *me, PyObject *arg)
   if (err >= 0 && err < N(tab)) errtag = tab[err];
   else errtag = "<unknown>";
   if ((x = PyObject_GetAttrString(me, "errstring")) == 0 ||
-      (errstr = PyString_AsString(x)) == 0)
+      (errstr = TEXT_STR(x)) == 0)
     goto done;
-  rc = PyString_FromFormat("%s (%ld): %s", errtag, -err, errstr);
+  rc = TEXT_FORMAT("%s (%ld): %s", errtag, -err, errstr);
 
 done:
   Py_XDECREF(x);
@@ -181,7 +181,7 @@ static int convfilter(PyObject *x, void *p)
   int err;
   int rc = 0;
 
-  if ((fs = PyString_AsString(x)) != 0) {
+  if ((fs = TEXT_STR(x)) != 0) {
     if ((err = key_readflags(fs, &end, &f->f, &f->m)) != 0)
       KEYERR(err);
     if (*end)
@@ -220,7 +220,7 @@ static int convflags(PyObject *x, void *p)
     return (1);
   else {
     PyErr_Clear();
-    if ((fs = PyString_AsString(x)) != 0) {
+    if ((fs = TEXT_STR(x)) != 0) {
       if ((err = key_readflags(fs, &end, f, 0)) != 0)
        KEYERR(err);
       if (*end)
@@ -261,7 +261,7 @@ static PyObject *kdmeth_writeflags(PyObject *me, PyObject *arg)
 
   if (!PyArg_ParseTuple(arg, "O&:key_writeflags", convuint, &f)) return (0);
   key_writeflags(f, &d);
-  rc = PyString_FromStringAndSize(d.buf, d.len);
+  rc = TEXT_FROMSTRLEN(d.buf, d.len);
   dstr_destroy(&d);
   return (rc);
 }
@@ -338,7 +338,7 @@ static PyObject *kdmeth_write(PyObject *me, PyObject *arg, PyObject *kw)
                                   convfilter, &f))
     return (0);
   key_write(KEYDATA_KD(me), &d, &f);
-  rc = PyString_FromStringAndSize(d.buf, d.len);
+  rc = TEXT_FROMSTRLEN(d.buf, d.len);
   dstr_destroy(&d);
   return (rc);
 }
@@ -795,7 +795,7 @@ end:
 }
 
 static PyObject *kdsget_str(PyObject *me, void *hunoz)
-  { return (PyString_FromString(KEYDATA_KD(me)->u.p)); }
+  { return (TEXT_FROMSTR(KEYDATA_KD(me)->u.p)); }
 
 static const PyGetSetDef keydatastr_pygetset[] = {
 #define GETSETNAME(op, name) kds##op##_##name
@@ -939,7 +939,7 @@ static void *keydatastruct_gmlookup(PyObject *me, PyObject *k, unsigned *f)
   key_struct *ks;
 
   assert((kd->e&KF_ENCMASK) == KENC_STRUCT);
-  if ((tag = PyString_AsString(k)) == 0) return (0);
+  if ((tag = TEXT_STR(k)) == 0) return (0);
   if (f) { key_split(&kd); KEYDATA_KD(me) = kd; }
   ks = sym_find(&kd->u.s, tag, -1, f ? sizeof(key_struct) : 0, f);
   if (ks && f && !*f) ks->k = 0;
@@ -958,7 +958,7 @@ static void *keydatastruct_gmiternext(PyObject *me, void *i)
   { return (sym_next(i)); }
 
 static PyObject *keydatastruct_gmentrykey(PyObject *me, void *e)
-  { key_struct *ks = e; return (PyString_FromString(SYM_NAME(ks))); }
+  { key_struct *ks = e; return (TEXT_FROMSTR(SYM_NAME(ks))); }
 
 static PyObject *keydatastruct_gmentryvalue(PyObject *me, void *e)
 {
@@ -1035,7 +1035,7 @@ static PyObject *keydatastruct_pynew(PyTypeObject *ty,
     if ((it = PyObject_GetIter(sub)) == 0)
       goto end;
     while ((name = PyIter_Next(it)) != 0) {
-      if ((p = PyString_AsString(name)) == 0 ||
+      if ((p = TEXT_STR(name)) == 0 ||
          (val = PyObject_GetItem(sub, name)) == 0)
        goto end;
       if (!KEYDATA_PYCHECK(val))
@@ -1119,7 +1119,7 @@ static const PyTypeObject keydatastruct_pytype_skel = {
 
 static void *keyattrs_gmlookup(PyObject *me, PyObject *k, unsigned *f)
 {
-  char *name = PyString_AsString(k);
+  char *name = TEXT_STR(k);
   key_attr *a = 0;
 
   if (!name) goto end;
@@ -1137,10 +1137,10 @@ static void *keyattrs_gmiternext(PyObject *me, void *i)
   { return (sym_next(i)); }
 
 static PyObject *keyattrs_gmentrykey(PyObject *me, void *e)
-  { return (PyString_FromString(SYM_NAME(e))); }
+  { return (TEXT_FROMSTR(SYM_NAME(e))); }
 
 static PyObject *keyattrs_gmentryvalue(PyObject *me, void *e)
-  { return (PyString_FromString(((key_attr *)e)->p)); }
+  { return (TEXT_FROMSTR(((key_attr *)e)->p)); }
 
 static int keyattrs_gmsetentry(PyObject *me, void *e, PyObject *val)
 {
@@ -1149,8 +1149,8 @@ static int keyattrs_gmsetentry(PyObject *me, void *e, PyObject *val)
   Py_ssize_t n;
   int rc = -1;
 
-  if (!PyString_Check(val)) TYERR("expected string");
-  p = PyString_AS_STRING(val); n = PyString_GET_SIZE(val);
+  if (!TEXT_CHECK(val)) TYERR("expected string");
+  TEXT_PTRLEN(val, p, n);
   if (n > 255) VALERR("attribute too long");
   if (memchr(p, 0, n)) VALERR("attribute must not contain nul");
   if (a->p) xfree(a->p);
@@ -1345,7 +1345,7 @@ static PyObject *kmeth_extract(PyObject *me, PyObject *arg, PyObject *kw)
                                   convfilter, &f) ||
       (fp = PyFile_AsFile(file)) == 0 ||
       (nameobj = PyFile_Name(file)) == 0 ||
-      (name = PyString_AsString(nameobj)) == 0)
+      (name = TEXT_STR(nameobj)) == 0)
     goto end;
   if (key_extract(KEY_KF(me), KEY_K(me), fp, &f))
     OSERR(name);
@@ -1372,7 +1372,7 @@ static PyObject *kget_id(PyObject *me, void *hunoz)
 static PyObject *kget_file(PyObject *me, void *hunoz)
   { RETURN_OBJ(KEY_KFOBJ(me)); }
 static PyObject *kget_type(PyObject *me, void *hunoz)
-  { return (PyString_FromString(KEY_K(me)->type)); }
+  { return (TEXT_FROMSTR(KEY_K(me)->type)); }
 static PyObject *kget_exptime(PyObject *me, void *hunoz)
   { return (getulong(KEY_K(me)->exp)); }
 static PyObject *kget_deltime(PyObject *me, void *hunoz)
@@ -1443,7 +1443,7 @@ static PyObject *kget_fulltag(PyObject *me, void *hunoz)
   PyObject *rc;
 
   key_fulltag(KEY_K(me), &d);
-  rc = PyString_FromStringAndSize(d.buf, d.len);
+  rc = TEXT_FROMSTRLEN(d.buf, d.len);
   dstr_destroy(&d);
   return (rc);
 }
@@ -1451,7 +1451,7 @@ static PyObject *kget_fulltag(PyObject *me, void *hunoz)
 static PyObject *kget_tag(PyObject *me, void *hunoz)
 {
   if (!KEY_K(me)->tag) RETURN_NONE;
-  return (PyString_FromString(KEY_K(me)->tag));
+  return (TEXT_FROMSTR(KEY_K(me)->tag));
 }
 static int kset_tag(PyObject *me, PyObject *x, void *hunoz)
 {
@@ -1459,7 +1459,7 @@ static int kset_tag(PyObject *me, PyObject *x, void *hunoz)
   char *tag;
 
   if (!x || x == Py_None) tag = 0;
-  else if ((tag = PyString_AsString(x)) == 0) goto end;
+  else if ((tag = TEXT_STR(x)) == 0) goto end;
   if ((err = key_settag(KEY_KF(me), KEY_K(me), tag)) != 0) KEYERR(err);
   return (0);
 end:
@@ -1469,7 +1469,7 @@ end:
 static PyObject *kget_comment(PyObject *me, void *hunoz)
 {
   if (!KEY_K(me)->c) RETURN_NONE;
-  return (PyString_FromString(KEY_K(me)->c));
+  return (TEXT_FROMSTR(KEY_K(me)->c));
 }
 static int kset_comment(PyObject *me, PyObject *x, void *hunoz)
 {
@@ -1477,7 +1477,7 @@ static int kset_comment(PyObject *me, PyObject *x, void *hunoz)
   char *c;
 
   if (!x || x == Py_None) c = 0;
-  else if ((c = PyString_AsString(x)) == 0) goto end;
+  else if ((c = TEXT_STR(x)) == 0) goto end;
   if ((err = key_setcomment(KEY_KF(me), KEY_K(me), c)) != 0) KEYERR(err);
   return (0);
 end:
@@ -1572,7 +1572,7 @@ static key *bytag(PyObject *me, PyObject *tagobj)
     k = key_byid(KEYFILE_KF(me), id);
   else {
     PyErr_Clear();
-    if ((tag = PyString_AsString(tagobj)) == 0)
+    if ((tag = TEXT_STR(tagobj)) == 0)
       goto end;
     k = key_bytag(KEYFILE_KF(me), tag);
   }
@@ -1704,7 +1704,7 @@ static PyObject *kfmeth_merge(PyObject *me, PyObject *arg, PyObject *kw)
   if ((fp = PyFile_AsFile(x)) == 0)
     goto end;
   x = PyFile_Name(x);
-  if ((name = PyString_AsString(x)) == 0)
+  if ((name = TEXT_STR(x)) == 0)
     goto end;
   rc = key_merge(KEYFILE_KF(me), name, fp, pythonreporter, &ri);
   if (ri.stop)
@@ -1806,7 +1806,7 @@ end:
 }
 
 static PyObject *kfget_name(PyObject *me, void *hunoz)
-  { return (PyString_FromString(KEYFILE_KF(me)->name)); }
+  { return (TEXT_FROMSTR(KEYFILE_KF(me)->name)); }
 static PyObject *kfget_modifiedp(PyObject *me, void *hunoz)
   { return (getbool(KEYFILE_KF(me)->f & KF_MODIFIED)); }
 static PyObject *kfget_writep(PyObject *me, void *hunoz)