PageRenderTime 40ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/src/error.c

https://bitbucket.org/drjokepu/libpx
C | 141 lines | 109 code | 25 blank | 7 comment | 16 complexity | 2aca466f31c00efee5525c1661a3d8ea MD5 | raw file
  1. //
  2. // error.c
  3. // libpx
  4. //
  5. // Created by Tamas Czinege on 08/05/2012.
  6. // Copyright (c) 2012 Tamas Czinege. All rights reserved.
  7. //
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include "error.h"
  12. #include "response.h"
  13. #include "utility.h"
  14. static void px_error_delete_string(char *str);
  15. px_error *px_error_new(const px_response *restrict response)
  16. {
  17. px_error *error = calloc(1, sizeof(px_error));
  18. error->severity = px_copy_string(response->response_data.error.severity);
  19. error->sqlState = px_copy_string(response->response_data.error.sqlstate);
  20. error->message = px_copy_string(response->response_data.error.message);
  21. error->detail = px_copy_string(response->response_data.error.detail);
  22. error->hint = px_copy_string(response->response_data.error.hint);
  23. error->position = px_copy_string(response->response_data.error.position);
  24. error->internal_position = px_copy_string(response->response_data.error.internal_position);
  25. error->internal_query = px_copy_string(response->response_data.error.internal_query);
  26. error->where = px_copy_string(response->response_data.error.where);
  27. error->file = px_copy_string(response->response_data.error.file);
  28. error->line = px_copy_string(response->response_data.error.line);
  29. error->routine = px_copy_string(response->response_data.error.routine);
  30. return error;
  31. }
  32. px_error *px_error_new_custom(const char *sqlState, const char *message)
  33. {
  34. px_error *error = calloc(1, sizeof(px_error));
  35. error->sqlState = px_copy_string(sqlState);
  36. error->message = px_copy_string(message);
  37. return error;
  38. }
  39. void px_error_delete(px_error *error)
  40. {
  41. if (error == NULL) return;
  42. px_error_delete_string(error->severity);
  43. px_error_delete_string(error->sqlState);
  44. px_error_delete_string(error->message);
  45. px_error_delete_string(error->detail);
  46. px_error_delete_string(error->hint);
  47. px_error_delete_string(error->position);
  48. px_error_delete_string(error->internal_position);
  49. px_error_delete_string(error->internal_query);
  50. px_error_delete_string(error->where);
  51. px_error_delete_string(error->file);
  52. px_error_delete_string(error->line);
  53. px_error_delete_string(error->routine);
  54. free(error);
  55. }
  56. static void px_error_delete_string(char *str)
  57. {
  58. if (str != NULL)
  59. free(str);
  60. }
  61. const char *px_error_get_severity(const px_error *restrict error)
  62. {
  63. return error == NULL ? "" : px_null_coalesce(error->severity);
  64. }
  65. const char *px_error_get_sqlstate(const px_error *restrict error)
  66. {
  67. return error == NULL ? "" : px_null_coalesce(error->sqlState);
  68. }
  69. const char *px_error_get_message(const px_error *restrict error)
  70. {
  71. return error == NULL ? "" : px_null_coalesce(error->message);
  72. }
  73. const char *px_error_get_detail(const px_error *restrict error)
  74. {
  75. return error == NULL ? "" : px_null_coalesce(error->detail);
  76. }
  77. const char *px_error_get_hint(const px_error *restrict error)
  78. {
  79. return error == NULL ? "" : px_null_coalesce(error->hint);
  80. }
  81. const char *px_error_get_position(const px_error *restrict error)
  82. {
  83. return error == NULL ? "" : px_null_coalesce(error->position);
  84. }
  85. const char *px_error_get_internal_position(const px_error *restrict error)
  86. {
  87. return error == NULL ? "" : px_null_coalesce(error->internal_position);
  88. }
  89. const char *px_error_get_internal_query(const px_error *restrict error)
  90. {
  91. return error == NULL ? "" : px_null_coalesce(error->internal_query);
  92. }
  93. const char *px_error_get_where(const px_error *restrict error)
  94. {
  95. return error == NULL ? "" : px_null_coalesce(error->where);
  96. }
  97. const char *px_error_get_file(const px_error *restrict error)
  98. {
  99. return error == NULL ? "" : px_null_coalesce(error->file);
  100. }
  101. const char *px_error_get_line(const px_error *restrict error)
  102. {
  103. return error == NULL ? "" : px_null_coalesce(error->line);
  104. }
  105. const char *px_error_get_routine(const px_error *restrict error)
  106. {
  107. return error == NULL ? "" : px_null_coalesce(error->routine);
  108. }
  109. px_error *px_error_new_authentication_failure()
  110. {
  111. return px_error_new_custom("28P01", "authentication failure");
  112. }
  113. px_error *px_error_new_io_error()
  114. {
  115. return px_error_new_custom("58030", "io error");
  116. }