|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define NGX_SYS_NERR 132
- #define NGX_OK 0 //src/core/ngx_core.h:36
- #define NGX_ERROR -1 //src/core/ngx_core.h:37
- #define ngx_strlen(s) strlen((const char *) s) //src/core/ngx_string:61
- typedef unsigned char u_char;
- typedef int ngx_err_t; //src/os/unix/ngx_errno.h:16
- typedef struct { //src/core/ngx_string.h:16
- size_t len;
- u_char *data;
- } ngx_str_t;
- static ngx_str_t *ngx_sys_errlist; //src/os/unix/ngx_errno.h:28
- void * //src/core/ngx_string.h:1965
- ngx_memcpy(void *dst, const void *src, size_t n) {
- // if (n > NGX_MEMCPY_LIMIT) {
- // ngx_log_error(NGX_LOG_ALETER, ngx_cycle->log, 0, "memcpy %uz bytes", n);
- // ngx_debug_point();
- // }
- return memcpy(dst, src, n);
- }
- int
- ngx_strerror_init(void) {
- char *msg;
- u_char *p;
- size_t len;
- ngx_err_t err;
- len = NGX_SYS_NERR * sizeof(ngx_str_t);
- ngx_sys_errlist = malloc(len);
- if (ngx_sys_errlist == NULL) {
- goto failed;
- }
- for ( err = 0; err < NGX_SYS_NERR; err++) {
- msg = strerror(err); // get error infor from number by using system function strerror()
- len = ngx_strlen(msg);
- p = malloc(len); //get a memory for current error string by use malloc(), which return a char pointer
- if( p == NULL ) {
- goto failed;
- }
- ngx_memcpy(p, msg, len);
- ngx_sys_errlist[err].len = len;
- ngx_sys_errlist[err].data = p;
- }
- return NGX_OK;
- failed:
- // err = errno;
- // ngx_log_stderr(0, "malloc(%uz) failed (%d: %s)", len, err, strerror(err));
- return NGX_ERROR;
- }
- int
- main(int argc, char ** argv) {
- //call the ngx_strerror_init() function to get the table of ngx_sys_errlist
- if (ngx_strerror_init() == NGX_OK) {
- int i;
- for (i = 0; i < NGX_SYS_NERR; i++) {
- printf("%d\t%d\t%s\n", i, ngx_sys_errlist[i].len, ngx_sys_errlist[i].data);
- }
- }
- return 0;
- }
复制代码
因为只先考虑了函数实现,但是这之中的日志处理,暂时将其注释了,,,还有待研究研究。。。唉,,,必须努力啊
。。。
|
|