static int add_DN_object(X509_NAME *n, char *text, const char *def,
                         char *value, int nid, int n_min, int n_max,
                         unsigned long chtype, int mval)
{
    int i, ret = 0;
    MS_STATIC char buf[1024];
 start:
    if (!batch)
        BIO_printf(bio_err, "%s [%s]:", text, def);
    (void)BIO_flush(bio_err);
    if (value != NULL) {
        BUF_strlcpy(buf, value, sizeof buf);
        BUF_strlcat(buf, "\n", sizeof buf);
        BIO_printf(bio_err, "%s\n", value);
    } else {
        buf[0] = '\0';
        if (!batch) {
            if (!fgets(buf, sizeof buf, stdin))
                return 0;
        } else {
            buf[0] = '\n';
            buf[1] = '\0';
        }
    }
    if (buf[0] == '\0')
        return (0);
    else if (buf[0] == '\n') {
        if ((def == NULL) || (def[0] == '\0'))
            return (1);
        BUF_strlcpy(buf, def, sizeof buf);
        BUF_strlcat(buf, "\n", sizeof buf);
    } else if ((buf[0] == '.') && (buf[1] == '\n'))
        return (1);
    i = strlen(buf);
    if (buf[i - 1] != '\n') {
        BIO_printf(bio_err, "weird input :-(\n");
        return (0);
    }
    buf[--i] = '\0';
#ifdef CHARSET_EBCDIC
    ebcdic2ascii(buf, buf, i);
#endif
    if (!req_check_len(i, n_min, n_max)) {
        if (batch || value)
            return 0;
        goto start;
    }
    if (!X509_NAME_add_entry_by_NID(n, nid, chtype,
                                    (unsigned char *)buf, -1, -1, mval))
        goto err;
    ret = 1;
 err:
    return (ret);
}
['static int add_DN_object(X509_NAME *n, char *text, const char *def,\n                         char *value, int nid, int n_min, int n_max,\n                         unsigned long chtype, int mval)\n{\n    int i, ret = 0;\n    MS_STATIC char buf[1024];\n start:\n    if (!batch)\n        BIO_printf(bio_err, "%s [%s]:", text, def);\n    (void)BIO_flush(bio_err);\n    if (value != NULL) {\n        BUF_strlcpy(buf, value, sizeof buf);\n        BUF_strlcat(buf, "\\n", sizeof buf);\n        BIO_printf(bio_err, "%s\\n", value);\n    } else {\n        buf[0] = \'\\0\';\n        if (!batch) {\n            if (!fgets(buf, sizeof buf, stdin))\n                return 0;\n        } else {\n            buf[0] = \'\\n\';\n            buf[1] = \'\\0\';\n        }\n    }\n    if (buf[0] == \'\\0\')\n        return (0);\n    else if (buf[0] == \'\\n\') {\n        if ((def == NULL) || (def[0] == \'\\0\'))\n            return (1);\n        BUF_strlcpy(buf, def, sizeof buf);\n        BUF_strlcat(buf, "\\n", sizeof buf);\n    } else if ((buf[0] == \'.\') && (buf[1] == \'\\n\'))\n        return (1);\n    i = strlen(buf);\n    if (buf[i - 1] != \'\\n\') {\n        BIO_printf(bio_err, "weird input :-(\\n");\n        return (0);\n    }\n    buf[--i] = \'\\0\';\n#ifdef CHARSET_EBCDIC\n    ebcdic2ascii(buf, buf, i);\n#endif\n    if (!req_check_len(i, n_min, n_max)) {\n        if (batch || value)\n            return 0;\n        goto start;\n    }\n    if (!X509_NAME_add_entry_by_NID(n, nid, chtype,\n                                    (unsigned char *)buf, -1, -1, mval))\n        goto err;\n    ret = 1;\n err:\n    return (ret);\n}']