error.c
来自「ftam等标准协议服务器和客户端的源代码。」· C语言 代码 · 共 264 行
C
264 行
#ifndef lintstatic char *rcsid = "$Header: /xtel/isode/isode/others/quipu/uips/doog/query/RCS/error.c,v 9.0 1992/06/16 12:45:27 isode Rel $";#endif/* $Header: /xtel/isode/isode/others/quipu/uips/doog/query/RCS/error.c,v 9.0 1992/06/16 12:45:27 isode Rel $ *//* * $Log: error.c,v $ * Revision 9.0 1992/06/16 12:45:27 isode * Release 8.0 * *//***************************************************************************** error.c - Misc. functions for handling error lists.*****************************************************************************/#include "types.h"#include "error.h"#include "util.h"#include "request.h"#include "quipu/util.h"#include "quipu/ds_error.h"extern LLog *log_stat;QE_error error_msgs[] ={ {QERR_ok, "OK"}, {QERR_succeeded, "Successful"}, {QERR_request_failed, "Request Failed!"}, {QERR_referral_error, "Could Not Contact Remote Part Of Directory"}, {QERR_bad_name, "Bad Name Supplied"}, {QERR_internal_limit_reached, "Internal Limit Reached. Cannot Perform"}, {QERR_bad_value_syntax, "Bad Value Supplied"}, {QERR_time_limit_reached, "Time Limit Reached"}, {QERR_size_limit_reached, "Size Limit Encountered"}, {QERR_admin_limit_reached, "Administrative Limit Encountered"}, {QERR_local_error, "Local Directory System Error"}, {QERR_remote_error, "Remote Directory System Error"}, {QERR_no_such_attr, "No Such Attribute"}, {QERR_bad_attr_syntax, "Bad Attribute Syntax"}, {QERR_no_such_object, "Unknown Directory Object"}, {QERR_alias_problem, "Alias Problem"}, {QERR_security_error, "Security Problem"}, {QERR_service_busy, "Service Busy"}, {QERR_service_unavailable, "Service Unavailable"}, {QERR_chaining_required, "Chaining Required"}, {QERR_unable_to_proceed, "Unable To Proceed"}, {QERR_loop_detect, "Directory Loop Detected"}, {QERR_ext_unavailable, "Directory Service Extension Unavailable"}, {QERR_out_of_scope, "Out Of Scope"}, {QERR_dit_error, "DIT Error"}, {QERR_naming_violation, "Naming Violation"}, {QERR_oc_violation, "Object Class Violation"}, {QERR_not_on_nonleaf, "Not On Non Leaf Entry"}, {QERR_not_on_rdn, "Not On RDN"}, {QERR_already_exists, "Already Exists"}, {QERR_affects_mult_dsas, "Affects Multiple DSAs"}, {QERR_no_oc_mods, "No Object Class Modifications Allowed"}, {QERR_no_such_op, "No Such Operation"}, {QERR_too_late, "Operation Requested Too Late"}, {QERR_cannot_abandon, "Operation Cannot Be Abandoned"}, {QERR_nothing_found, "Nothing Found"}, {QERR_internal, "Internal Error!"}, {QERR_no_mods_supplied, "No modifications to make!"}, {QERR_null, ""}};/* * - get_message_of_code() - * * */char *get_message_of_code(code) QE_error_code code;{ QCardinal count; for (count = 0; error_msgs[count].error != QERR_null; count++) if (code == error_msgs[count].error) return error_msgs[count].error_message; return NULLCP;}/* * - char *get_message_from_ds_error() - * * */char *ds_error_message(error) struct DSError *error;{ PS ps; char buffer[LINESIZE]; char *str, *message; if (error == (struct DSError *) NULL) return NULLCP; if ((ps = ps_alloc(str_open)) == NULLPS) return NULLCP; if (str_setup(ps, buffer, LINESIZE, 1) == NOTOK) return NULLCP; ds_error(ps, error); *ps->ps_ptr = 0; ps_free(ps); str = buffer; if (*str != '\0') message = copy_string(str); else message = NULLCP; return message;} /* get_message_from_ds_error */ /* * - add_error_to_request_rec() - * A dap error has occured. Record it in the given request record. * */void add_error_to_request_rec(request, baseobject, error_type, error) requestRec request; char *baseobject; QE_error_code error_type; struct DSError *error;{ errorList new_err = error_alloc(); new_err->baseobject = (baseobject == NULLCP? NULLCP:copy_string(baseobject)); new_err->error_type = error_type; new_err->next = request->errors; new_err->ds_message = ds_error_message(error); request->errors = new_err;} /* add_error_to_request_rec *//* ARGSUSED */QE_error_code get_log_error_type(error, task_id) struct DSError *error; int task_id;{ log_ds_error(error); switch (error->dse_type) { case DSE_LOCALERROR: return QERR_local_error; case DSE_REMOTEERROR: return QERR_remote_error; case DSE_NOERROR: return QERR_ok; case DSE_ATTRIBUTEERROR: return QERR_bad_attr_syntax; case DSE_NAMEERROR: return QERR_bad_name; case DSE_SERVICEERROR: return QERR_service_unavailable; case DSE_REFERRAL: case DSE_DSAREFERRAL: return QERR_referral_error; case DSE_ABANDONED: return QERR_ok; case DSE_ABANDON_FAILED: return QERR_ok; case DSE_SECURITYERROR: return QERR_security_error; case DSE_UPDATEERROR: return QERR_request_failed; default: return QERR_ok; }}/* * - error_list_free() - * * */void error_list_free(error_list_ptr) errorList *error_list_ptr;{ errorList next_errors, errors = *error_list_ptr; while (errors != NULLError) { if (errors->baseobject != NULLCP) free(errors->baseobject); next_errors = errors->next; if (errors->ds_message != NULLCP) (void) free(errors->ds_message); free((char *) errors); errors = next_errors; } *error_list_ptr = NULLError;} /* error_list_free *//* * - error_list_copy() - * * */errorList error_list_copy(list) errorList list;{ errorList new_list = NULLError, curr_error = NULLError; if (list == NULLError) return NULLError; for (; list != NULLError; list = list->next) { if (new_list == NULLError) new_list = curr_error = error_alloc(); else curr_error = curr_error->next = error_alloc(); curr_error->error_type = list->error_type; curr_error->baseobject = (list->baseobject != NULLCP ? copy_string(list->baseobject) : NULLCP); curr_error->ds_message = (list->ds_message != NULLCP ? copy_string(list->ds_message) : NULLCP); curr_error->next = NULLError; } return new_list;} /* error_list_copy */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?