📄 error.c
字号:
#include "a64-2.h"#include "error.h"#include <stdio.h>/* global error struct link */static struct err_struct *err_link = 0;/* the error link struct pool */static struct err_struct err_pool[32];static unsigned int err_struct_present = 0;static char err_msg[ERR_MSG_SIZE];static struct err_struct *get_err_struct(){ int i = 0; int j = 0; /* test err_struct_present's bit is used ? */ while ((i < 32) && ((j = (1<<i)) & err_struct_present)) i++; if (i == 31) return 0; err_struct_present |= j; return &err_pool[i];}#if 0static int del_err_struct(struct err_struct *err_s){ if (!err_s) return 0; mem_zero(err_s, sizeof(struct err_struct)); int i = ((unsigned long)&err_s->errno - (unsigned long)&err_pool[0]) / sizeof(struct err_struct); return 0;}#endif#if 0main(){ char msg[128]; sprintf(msg, "at %d lines: %s\n", 1, "parse error"); mount_err_link(0,0,msg); print_err();}#endifint mount_err_link(errno_t errno, char *err_msg[], char *err_info){ struct err_struct *err_lk = err_link; struct err_struct *tmp_lk = get_err_struct(); if (!tmp_lk) return 1; if ((!errno && err_msg) || (errno && !err_msg)) return -1; tmp_lk->errno = errno; tmp_lk->err_msg = err_msg; tmp_lk->err_info = err_info; if (!err_link) { err_link = tmp_lk; } else { while (err_lk->next) err_lk = err_lk->next; err_lk->next = tmp_lk; } return 0;}__inline__ char *get_err_msg_addr(){ return err_msg;}static void print_err_msg(struct err_struct *err){ if (err) PRINT_ERRMSG(err->errno, err->err_msg);}void print_err(){ for ( ; err_link; err_link = err_link->next) { fprintf(stderr, err_link->err_info ? err_link->err_info: ""); print_err_msg(err_link); }}void release_err_link(){}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -