diff options
author | Simon Josefsson <simon@josefsson.org> | 2006-03-03 16:49:25 +0000 |
---|---|---|
committer | Simon Josefsson <simon@josefsson.org> | 2006-03-03 16:49:25 +0000 |
commit | 8af0967a71488d0b408588d2d8f38203345e6491 (patch) | |
tree | 32eae741ba61000dc28cc6f80e107ded53703477 | |
parent | 2d736dc024c6ec6a4c459f127a075a615940966d (diff) | |
download | gnutls-8af0967a71488d0b408588d2d8f38203345e6491.tar.gz |
Error message translations.
-rw-r--r-- | lib/gnutls_errors.c | 212 | ||||
-rw-r--r-- | lib/gnutls_global.c | 6 |
2 files changed, 111 insertions, 107 deletions
diff --git a/lib/gnutls_errors.c b/lib/gnutls_errors.c index e47bd65bb8..07c7524030 100644 --- a/lib/gnutls_errors.c +++ b/lib/gnutls_errors.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation + * Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation * * Author: Nikos Mavroyanopoulos * @@ -29,6 +29,11 @@ # include <stdarg.h> #endif +/* I18n of error codes. */ +#include "gettext.h" +#define _(String) dgettext (PACKAGE, String) +#define N_(String) gettext_noop (String) + extern LOG_FUNC _gnutls_log_func; #define ERROR_ENTRY(desc, name, fatal) \ @@ -45,200 +50,195 @@ typedef struct gnutls_error_entry gnutls_error_entry; static const gnutls_error_entry error_algorithms[] = { /* "Short Description", Error code define, critical (0,1) -- 1 in most cases */ - ERROR_ENTRY ("Success.", GNUTLS_E_SUCCESS, 0), - ERROR_ENTRY ("Could not negotiate a supported cipher suite.", + ERROR_ENTRY (N_("Success."), GNUTLS_E_SUCCESS, 0), + ERROR_ENTRY (N_("Could not negotiate a supported cipher suite."), GNUTLS_E_UNKNOWN_CIPHER_SUITE, 1), - ERROR_ENTRY ("The cipher type is unsupported.", + ERROR_ENTRY (N_("The cipher type is unsupported."), GNUTLS_E_UNKNOWN_CIPHER_TYPE, 1), - ERROR_ENTRY ("The certificate and the given key do not match.", + ERROR_ENTRY (N_("The certificate and the given key do not match."), GNUTLS_E_CERTIFICATE_KEY_MISMATCH, 1), - ERROR_ENTRY ("Could not negotiate a supported compression method.", + ERROR_ENTRY (N_("Could not negotiate a supported compression method."), GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM, 1), - ERROR_ENTRY ("An unknown public key algorithm was encountered.", + ERROR_ENTRY (N_("An unknown public key algorithm was encountered."), GNUTLS_E_UNKNOWN_PK_ALGORITHM, 1), - ERROR_ENTRY ("An algorithm that is not enabled was negotiated.", + ERROR_ENTRY (N_("An algorithm that is not enabled was negotiated."), GNUTLS_E_UNWANTED_ALGORITHM, 1), - ERROR_ENTRY ("A large TLS record packet was received.", + ERROR_ENTRY (N_("A large TLS record packet was received."), GNUTLS_E_LARGE_PACKET, 1), - ERROR_ENTRY ("A record packet with illegal version was received.", + ERROR_ENTRY (N_("A record packet with illegal version was received."), GNUTLS_E_UNSUPPORTED_VERSION_PACKET, 1), - ERROR_ENTRY - ("The Diffie Hellman prime sent by the server is not acceptable (not long enough).", + ERROR_ENTRY (N_("The Diffie Hellman prime sent by the server is not acceptable (not long enough)."), GNUTLS_E_DH_PRIME_UNACCEPTABLE, 1), - ERROR_ENTRY ("A TLS packet with unexpected length was received.", + ERROR_ENTRY (N_("A TLS packet with unexpected length was received."), GNUTLS_E_UNEXPECTED_PACKET_LENGTH, 1), - ERROR_ENTRY ("The specified session has been invalidated for some reason.", + ERROR_ENTRY (N_("The specified session has been invalidated for some reason."), GNUTLS_E_INVALID_SESSION, 1), - ERROR_ENTRY ("GnuTLS internal error.", GNUTLS_E_INTERNAL_ERROR, 1), - ERROR_ENTRY ("An illegal TLS extension was received.", + ERROR_ENTRY (N_("GnuTLS internal error."), GNUTLS_E_INTERNAL_ERROR, 1), + ERROR_ENTRY (N_("An illegal TLS extension was received."), GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION, 1), - ERROR_ENTRY ("A TLS fatal alert has been received.", + ERROR_ENTRY (N_("A TLS fatal alert has been received."), GNUTLS_E_FATAL_ALERT_RECEIVED, 1), - ERROR_ENTRY ("An unexpected TLS packet was received.", + ERROR_ENTRY (N_("An unexpected TLS packet was received."), GNUTLS_E_UNEXPECTED_PACKET, 1), - ERROR_ENTRY ("A TLS warning alert has been received.", + ERROR_ENTRY (N_("A TLS warning alert has been received."), GNUTLS_E_WARNING_ALERT_RECEIVED, 0), - ERROR_ENTRY - ("An error was encountered at the TLS Finished packet calculation.", + ERROR_ENTRY (N_("An error was encountered at the TLS Finished packet calculation."), GNUTLS_E_ERROR_IN_FINISHED_PACKET, 1), - ERROR_ENTRY ("The peer did not send any certificate.", + ERROR_ENTRY (N_("The peer did not send any certificate."), GNUTLS_E_NO_CERTIFICATE_FOUND, 1), - ERROR_ENTRY ("No temporary RSA parameters were found.", + ERROR_ENTRY (N_("No temporary RSA parameters were found."), GNUTLS_E_NO_TEMPORARY_RSA_PARAMS, 1), - ERROR_ENTRY ("No temporary DH parameters were found.", + ERROR_ENTRY (N_("No temporary DH parameters were found."), GNUTLS_E_NO_TEMPORARY_DH_PARAMS, 1), - ERROR_ENTRY ("An unexpected TLS handshake packet was received.", + ERROR_ENTRY (N_("An unexpected TLS handshake packet was received."), GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET, 1), - ERROR_ENTRY ("The scanning of a large integer has failed.", + ERROR_ENTRY (N_("The scanning of a large integer has failed."), GNUTLS_E_MPI_SCAN_FAILED, 1), - ERROR_ENTRY ("Could not export a large integer.", + ERROR_ENTRY (N_("Could not export a large integer."), GNUTLS_E_MPI_PRINT_FAILED, 1), - ERROR_ENTRY ("Decryption has failed.", GNUTLS_E_DECRYPTION_FAILED, 1), - ERROR_ENTRY ("Encryption has failed.", GNUTLS_E_ENCRYPTION_FAILED, 1), - ERROR_ENTRY ("Public key decryption has failed.", + ERROR_ENTRY (N_("Decryption has failed."), GNUTLS_E_DECRYPTION_FAILED, 1), + ERROR_ENTRY (N_("Encryption has failed."), GNUTLS_E_ENCRYPTION_FAILED, 1), + ERROR_ENTRY (N_("Public key decryption has failed."), GNUTLS_E_PK_DECRYPTION_FAILED, 1), - ERROR_ENTRY ("Public key encryption has failed.", + ERROR_ENTRY (N_("Public key encryption has failed."), GNUTLS_E_PK_ENCRYPTION_FAILED, 1), - ERROR_ENTRY ("Public key signing has failed.", GNUTLS_E_PK_SIGN_FAILED, + ERROR_ENTRY (N_("Public key signing has failed."), GNUTLS_E_PK_SIGN_FAILED, 1), - ERROR_ENTRY ("Public key signature verification has failed.", + ERROR_ENTRY (N_("Public key signature verification has failed."), GNUTLS_E_PK_SIG_VERIFY_FAILED, 1), - ERROR_ENTRY ("Decompression of the TLS record packet has failed.", + ERROR_ENTRY (N_("Decompression of the TLS record packet has failed."), GNUTLS_E_DECOMPRESSION_FAILED, 1), - ERROR_ENTRY ("Compression of the TLS record packet has failed.", + ERROR_ENTRY (N_("Compression of the TLS record packet has failed."), GNUTLS_E_COMPRESSION_FAILED, 1), - ERROR_ENTRY ("Internal error in memory allocation.", + ERROR_ENTRY (N_("Internal error in memory allocation."), GNUTLS_E_MEMORY_ERROR, 1), - ERROR_ENTRY ("An unimplemented or disabled feature has been requested.", + ERROR_ENTRY (N_("An unimplemented or disabled feature has been requested."), GNUTLS_E_UNIMPLEMENTED_FEATURE, 1), - ERROR_ENTRY ("Insufficient credentials for that request.", + ERROR_ENTRY (N_("Insufficient credentials for that request."), GNUTLS_E_INSUFFICIENT_CREDENTIALS, 1), - ERROR_ENTRY ("Error in password file.", GNUTLS_E_SRP_PWD_ERROR, 1), - ERROR_ENTRY ("Wrong padding in PKCS1 packet.", GNUTLS_E_PKCS1_WRONG_PAD, + ERROR_ENTRY (N_("Error in password file."), GNUTLS_E_SRP_PWD_ERROR, 1), + ERROR_ENTRY (N_("Wrong padding in PKCS1 packet."), GNUTLS_E_PKCS1_WRONG_PAD, 1), - ERROR_ENTRY ("The requested session has expired.", GNUTLS_E_EXPIRED, 1), - ERROR_ENTRY ("Hashing has failed.", GNUTLS_E_HASH_FAILED, 1), - ERROR_ENTRY ("Base64 decoding error.", GNUTLS_E_BASE64_DECODING_ERROR, + ERROR_ENTRY (N_("The requested session has expired."), GNUTLS_E_EXPIRED, 1), + ERROR_ENTRY (N_("Hashing has failed."), GNUTLS_E_HASH_FAILED, 1), + ERROR_ENTRY (N_("Base64 decoding error."), GNUTLS_E_BASE64_DECODING_ERROR, 1), - ERROR_ENTRY ("Base64 encoding error.", GNUTLS_E_BASE64_ENCODING_ERROR, + ERROR_ENTRY (N_("Base64 encoding error."), GNUTLS_E_BASE64_ENCODING_ERROR, 1), - ERROR_ENTRY ("Parsing error in password file.", + ERROR_ENTRY (N_("Parsing error in password file."), GNUTLS_E_SRP_PWD_PARSING_ERROR, 1), - ERROR_ENTRY ("The requested data were not available.", + ERROR_ENTRY (N_("The requested data were not available."), GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE, 0), - ERROR_ENTRY ("Error in the pull function.", GNUTLS_E_PULL_ERROR, 1), - ERROR_ENTRY ("Error in the push function.", GNUTLS_E_PUSH_ERROR, 1), - ERROR_ENTRY - ("The upper limit of record packet sequence numbers has been reached. Wow!", + ERROR_ENTRY (N_("Error in the pull function."), GNUTLS_E_PULL_ERROR, 1), + ERROR_ENTRY (N_("Error in the push function."), GNUTLS_E_PUSH_ERROR, 1), + ERROR_ENTRY (N_("The upper limit of record packet sequence numbers has been reached. Wow!"), GNUTLS_E_RECORD_LIMIT_REACHED, 1), - ERROR_ENTRY ("Error in the certificate.", GNUTLS_E_CERTIFICATE_ERROR, + ERROR_ENTRY (N_("Error in the certificate."), GNUTLS_E_CERTIFICATE_ERROR, 1), - ERROR_ENTRY ("Unknown Subject Alternative name in X.509 certificate.", + ERROR_ENTRY (N_("Unknown Subject Alternative name in X.509 certificate."), GNUTLS_E_X509_UNKNOWN_SAN, 1), - ERROR_ENTRY ("Unsupported critical extension in X.509 certificate.", + ERROR_ENTRY (N_("Unsupported critical extension in X.509 certificate."), GNUTLS_E_X509_UNSUPPORTED_CRITICAL_EXTENSION, 1), - ERROR_ENTRY ("Key usage violation in certificate has been detected.", + ERROR_ENTRY (N_("Key usage violation in certificate has been detected."), GNUTLS_E_KEY_USAGE_VIOLATION, 1), - ERROR_ENTRY ("Function was interrupted.", GNUTLS_E_AGAIN, 0), - ERROR_ENTRY ("Function was interrupted.", GNUTLS_E_INTERRUPTED, 0), - ERROR_ENTRY ("Rehandshake was requested by the peer.", + ERROR_ENTRY (N_("Function was interrupted."), GNUTLS_E_AGAIN, 0), + ERROR_ENTRY (N_("Function was interrupted."), GNUTLS_E_INTERRUPTED, 0), + ERROR_ENTRY (N_("Rehandshake was requested by the peer."), GNUTLS_E_REHANDSHAKE, 0), - ERROR_ENTRY - ("TLS Application data were received, while expecting handshake data.", + ERROR_ENTRY (N_("TLS Application data were received, while expecting handshake data."), GNUTLS_E_GOT_APPLICATION_DATA, 1), - ERROR_ENTRY ("Error in Database backend.", GNUTLS_E_DB_ERROR, 1), - ERROR_ENTRY ("The certificate type is not supported.", + ERROR_ENTRY (N_("Error in Database backend."), GNUTLS_E_DB_ERROR, 1), + ERROR_ENTRY (N_("The certificate type is not supported."), GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE, 1), - ERROR_ENTRY ("The given memory buffer is too short to hold parameters.", + ERROR_ENTRY (N_("The given memory buffer is too short to hold parameters."), GNUTLS_E_SHORT_MEMORY_BUFFER, 1), - ERROR_ENTRY ("The request is invalid.", GNUTLS_E_INVALID_REQUEST, 1), - ERROR_ENTRY ("An illegal parameter has been received.", + ERROR_ENTRY (N_("The request is invalid."), GNUTLS_E_INVALID_REQUEST, 1), + ERROR_ENTRY (N_("An illegal parameter has been received."), GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER, 1), - ERROR_ENTRY ("Error while reading file.", GNUTLS_E_FILE_ERROR, 1), + ERROR_ENTRY (N_("Error while reading file."), GNUTLS_E_FILE_ERROR, 1), - ERROR_ENTRY ("ASN1 parser: Element was not found.", + ERROR_ENTRY (N_("ASN1 parser: Element was not found."), GNUTLS_E_ASN1_ELEMENT_NOT_FOUND, 1), - ERROR_ENTRY ("ASN1 parser: Identifier was not found", + ERROR_ENTRY (N_("ASN1 parser: Identifier was not found"), GNUTLS_E_ASN1_IDENTIFIER_NOT_FOUND, 1), - ERROR_ENTRY ("ASN1 parser: Error in DER parsing.", + ERROR_ENTRY (N_("ASN1 parser: Error in DER parsing."), GNUTLS_E_ASN1_DER_ERROR, 1), - ERROR_ENTRY ("ASN1 parser: Value was not found.", + ERROR_ENTRY (N_("ASN1 parser: Value was not found."), GNUTLS_E_ASN1_VALUE_NOT_FOUND, 1), - ERROR_ENTRY ("ASN1 parser: Generic parsing error.", + ERROR_ENTRY (N_("ASN1 parser: Generic parsing error."), GNUTLS_E_ASN1_GENERIC_ERROR, 1), - ERROR_ENTRY ("ASN1 parser: Value is not valid.", + ERROR_ENTRY (N_("ASN1 parser: Value is not valid."), GNUTLS_E_ASN1_VALUE_NOT_VALID, 1), - ERROR_ENTRY ("ASN1 parser: Error in TAG.", GNUTLS_E_ASN1_TAG_ERROR, 1), - ERROR_ENTRY ("ASN1 parser: error in implicit tag", + ERROR_ENTRY (N_("ASN1 parser: Error in TAG."), GNUTLS_E_ASN1_TAG_ERROR, 1), + ERROR_ENTRY (N_("ASN1 parser: error in implicit tag"), GNUTLS_E_ASN1_TAG_IMPLICIT, 1), - ERROR_ENTRY ("ASN1 parser: Error in type 'ANY'.", + ERROR_ENTRY (N_("ASN1 parser: Error in type 'ANY'."), GNUTLS_E_ASN1_TYPE_ANY_ERROR, 1), - ERROR_ENTRY ("ASN1 parser: Syntax error.", GNUTLS_E_ASN1_SYNTAX_ERROR, + ERROR_ENTRY (N_("ASN1 parser: Syntax error."), GNUTLS_E_ASN1_SYNTAX_ERROR, 1), - ERROR_ENTRY ("ASN1 parser: Overflow in DER parsing.", + ERROR_ENTRY (N_("ASN1 parser: Overflow in DER parsing."), GNUTLS_E_ASN1_DER_OVERFLOW, 1), - ERROR_ENTRY ("Too many empty record packets have been received.", + ERROR_ENTRY (N_("Too many empty record packets have been received."), GNUTLS_E_TOO_MANY_EMPTY_PACKETS, 1), - ERROR_ENTRY ("The initialization of GnuTLS-extra has failed.", + ERROR_ENTRY (N_("The initialization of GnuTLS-extra has failed."), GNUTLS_E_INIT_LIBEXTRA, 1), - ERROR_ENTRY - ("The GnuTLS library version does not match the GnuTLS-extra library version.", + ERROR_ENTRY (N_("The GnuTLS library version does not match the GnuTLS-extra library version."), GNUTLS_E_LIBRARY_VERSION_MISMATCH, 1), - ERROR_ENTRY ("The gcrypt library version is too old.", + ERROR_ENTRY (N_("The gcrypt library version is too old."), GNUTLS_E_INCOMPATIBLE_GCRYPT_LIBRARY, 1), - ERROR_ENTRY ("The tasn1 library version is too old.", + ERROR_ENTRY (N_("The tasn1 library version is too old."), GNUTLS_E_INCOMPATIBLE_LIBTASN1_LIBRARY, 1), ERROR_ENTRY - ("The specified GnuPG TrustDB version is not supported. TrustDB v4 is supported.", + ("The specified GnuPG TrustDB version is not supported. TrustDB v4 is supported."), GNUTLS_E_OPENPGP_TRUSTDB_VERSION_UNSUPPORTED, 1), - ERROR_ENTRY ("Error loading the keyring.", + ERROR_ENTRY (N_("Error loading the keyring."), GNUTLS_E_OPENPGP_KEYRING_ERROR, 1), - ERROR_ENTRY ("The initialization of LZO has failed.", + ERROR_ENTRY (N_("The initialization of LZO has failed."), GNUTLS_E_LZO_INIT_FAILED, 1), - ERROR_ENTRY ("No supported compression algorithms have been found.", + ERROR_ENTRY (N_("No supported compression algorithms have been found."), GNUTLS_E_NO_COMPRESSION_ALGORITHMS, 1), - ERROR_ENTRY ("No supported cipher suites have been found.", + ERROR_ENTRY (N_("No supported cipher suites have been found."), GNUTLS_E_NO_CIPHER_SUITES, 1), - ERROR_ENTRY ("Could not get OpenPGP key.", + ERROR_ENTRY (N_("Could not get OpenPGP key."), GNUTLS_E_OPENPGP_GETKEY_FAILED, 1), - ERROR_ENTRY ("The SRP username supplied is illegal.", + ERROR_ENTRY (N_("The SRP username supplied is illegal."), GNUTLS_E_ILLEGAL_SRP_USERNAME, 1), - ERROR_ENTRY ("The OpenPGP fingerprint is not supported.", + ERROR_ENTRY (N_("The OpenPGP fingerprint is not supported."), GNUTLS_E_OPENPGP_FINGERPRINT_UNSUPPORTED, 1), - ERROR_ENTRY ("The certificate has unsupported attributes.", + ERROR_ENTRY (N_("The certificate has unsupported attributes."), GNUTLS_E_X509_UNSUPPORTED_ATTRIBUTE, 1), - ERROR_ENTRY ("The OID is not supported.", GNUTLS_E_X509_UNSUPPORTED_OID, + ERROR_ENTRY (N_("The OID is not supported."), GNUTLS_E_X509_UNSUPPORTED_OID, 1), - ERROR_ENTRY ("The hash algorithm is unknown.", + ERROR_ENTRY (N_("The hash algorithm is unknown."), GNUTLS_E_UNKNOWN_HASH_ALGORITHM, 1), - ERROR_ENTRY ("The PKCS structure's content type is unknown.", + ERROR_ENTRY (N_("The PKCS structure's content type is unknown."), GNUTLS_E_UNKNOWN_PKCS_CONTENT_TYPE, 1), - ERROR_ENTRY ("The PKCS structure's bag type is unknown.", + ERROR_ENTRY (N_("The PKCS structure's bag type is unknown."), GNUTLS_E_UNKNOWN_PKCS_BAG_TYPE, 1), - ERROR_ENTRY ("The given password contains invalid characters.", + ERROR_ENTRY (N_("The given password contains invalid characters."), GNUTLS_E_INVALID_PASSWORD, 1), - ERROR_ENTRY ("The Message Authentication Code verification failed.", + ERROR_ENTRY (N_("The Message Authentication Code verification failed."), GNUTLS_E_MAC_VERIFY_FAILED, 1), - ERROR_ENTRY ("Some constraint limits were reached.", + ERROR_ENTRY (N_("Some constraint limits were reached."), GNUTLS_E_CONSTRAINT_ERROR, 1), - ERROR_ENTRY ("Failed to acquire random data.", GNUTLS_E_RANDOM_FAILED, + ERROR_ENTRY (N_("Failed to acquire random data."), GNUTLS_E_RANDOM_FAILED, 1), - ERROR_ENTRY ("Received a TLS/IA Intermediate Phase Finished message", + ERROR_ENTRY (N_("Received a TLS/IA Intermediate Phase Finished message"), GNUTLS_E_WARNING_IA_IPHF_RECEIVED, 0), - ERROR_ENTRY ("Received a TLS/IA Final Phase Finished message", + ERROR_ENTRY (N_("Received a TLS/IA Final Phase Finished message"), GNUTLS_E_WARNING_IA_FPHF_RECEIVED, 0), - ERROR_ENTRY ("Verifying TLS/IA phase checksum failed", + ERROR_ENTRY (N_("Verifying TLS/IA phase checksum failed"), GNUTLS_E_IA_VERIFY_FAILED, 1), {NULL, NULL, 0, 0} @@ -292,7 +292,7 @@ gnutls_perror (int error) GNUTLS_ERROR_ALG_LOOP (ret = p->desc); if (ret == NULL) ret = "(unknown)"; - fprintf (stderr, "GNUTLS ERROR: %s\n", ret); + fprintf (stderr, "GNUTLS ERROR: %s\n", _(ret)); } @@ -313,7 +313,7 @@ gnutls_strerror (int error) GNUTLS_ERROR_ALG_LOOP (ret = p->desc); if (ret == NULL) return "(unknown error code)"; - return ret; + return _(ret); } /* This will print the actual define of the @@ -327,7 +327,7 @@ _gnutls_strerror (int error) /* avoid prefix */ GNUTLS_ERROR_ALG_LOOP (ret = p->_name); - return ret; + return _(ret); } int @@ -370,7 +370,7 @@ _gnutls_asn2err (int asn_err) /* this function will output a message using the - * caller provided function + * caller provided function */ void _gnutls_log (int level, const char *fmt, ...) diff --git a/lib/gnutls_global.c b/lib/gnutls_global.c index 5f2eb2a51f..0b0a3e90c5 100644 --- a/lib/gnutls_global.c +++ b/lib/gnutls_global.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation + * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation * * Author: Nikos Mavroyanopoulos * @@ -27,6 +27,8 @@ #include <libtasn1.h> #include <gnutls_dh.h> +#include "gettext.h" + #define gnutls_log_func LOG_FUNC /* created by asn1c */ @@ -196,6 +198,8 @@ gnutls_global_init (void) if (_gnutls_init++) goto out; + bindtextdomain (PACKAGE, LOCALEDIR); + if (gcry_control (GCRYCTL_ANY_INITIALIZATION_P) == 0) { const char *p; |