Upstream version 5.34.98.0
[platform/framework/web/crosswalk.git] / src / native_client_sdk / src / libraries / nacl_io / syscalls / hstrerror.cc
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "nacl_io/ossocket.h"
6
7 #ifdef PROVIDES_SOCKET_API
8
9 #include <sstream>
10 #include <string>
11 #include "sdk_util/macros.h"
12
13 EXTERN_C_BEGIN
14
15 const char* hstrerror(int err) {
16   // These error message texts are taken straight from the man page
17   const char* host_not_found_msg =
18     "The specified host is unknown.";
19   const char* no_address_msg =
20     "The requested name is valid but does not have an IP address.";
21   const char* no_recovery_msg =
22     "A nonrecoverable name server error occurred.";
23   const char* try_again_msg =
24     "A temporary error occurred on an authoritative name server. "
25     "Try again later.";
26   const char* internal_msg =
27     "Internal error in gethostbyname.";
28   const char* unknown_msg_base =
29     "Unknown error in gethostbyname: ";
30
31   switch (err) {
32     case HOST_NOT_FOUND:
33       return host_not_found_msg;
34     case NO_ADDRESS:
35       return no_address_msg;
36     case NO_RECOVERY:
37       return no_recovery_msg;
38     case TRY_AGAIN:
39       return try_again_msg;
40     case NETDB_INTERNAL:
41       return internal_msg;
42     default:
43       std::stringstream msg;
44       msg << unknown_msg_base << err << ".";
45
46       static std::string unknown_msg;
47       unknown_msg.assign(msg.str());
48       return unknown_msg.c_str();
49   }
50 }
51
52 EXTERN_C_END
53
54 #endif // PROVIDES_SOCKET_API