SYSLOG.C
上传用户:sunrenlu
上传日期:2022-06-13
资源大小:1419k
文件大小:2k
源码类别:

操作系统开发

开发平台:

DOS

  1. /*
  2.  * Copyright (c) 1990, 1999 Erick Engelke
  3.  */
  4. #include <rtos.h>
  5. #include <net.h>
  6. #include <stdio.h>
  7. #include <ctype.h>
  8. #include <string.h>
  9. #include <stdlib.h>
  10. #include <time.h>
  11. #include <syslog.h>
  12. #define SYSLOG_PORT 514
  13. CODE prioritynames[] = {
  14. "alert", LOG_ALERT,
  15. "crit", LOG_CRIT,
  16. "debug", LOG_DEBUG,
  17. "emerg", LOG_EMERG,
  18. "err", LOG_ERR,
  19. "error", LOG_ERR, /* DEPRECATED */
  20. "info", LOG_INFO,
  21. "notice", LOG_NOTICE,
  22. "panic",  LOG_EMERG, /* DEPRECATED */
  23. "warn", LOG_WARNING, /* DEPRECATED */
  24. "warning", LOG_WARNING,
  25. "", -1,
  26. };
  27. int priority_msg_to_number( msg )
  28. char *msg;
  29. {
  30. int i;
  31. for( i=0; prioritynames[i].c_val != -1; i++ )
  32.   if( !stricmp( msg, prioritynames[i].c_name ) )
  33.     return( prioritynames[i].c_val );
  34. return( -1 );
  35. }
  36. CODE facilitynames[] = {
  37. "auth", LOG_AUTH,
  38. "authpriv", LOG_AUTHPRIV,
  39. "cron",  LOG_CRON,
  40. "daemon", LOG_DAEMON,
  41. "ftp", LOG_FTP,
  42. "kern", LOG_KERN,
  43. "lpr", LOG_LPR,
  44. "mail", LOG_MAIL,
  45. "news", LOG_NEWS,
  46. "security", LOG_AUTH, /* DEPRECATED */
  47. "syslog", LOG_SYSLOG,
  48. "user", LOG_USER,
  49. "uucp", LOG_UUCP,
  50. "local0", LOG_LOCAL0,
  51. "local1", LOG_LOCAL1,
  52. "local2", LOG_LOCAL2,
  53. "local3", LOG_LOCAL3,
  54. "local4", LOG_LOCAL4,
  55. "local5", LOG_LOCAL5,
  56. "local6", LOG_LOCAL6,
  57. "local7", LOG_LOCAL7,
  58. "", -1,
  59. };
  60. int facility_msg_to_number( msg )
  61. char *msg;
  62. {
  63. int i;
  64. for( i=0; facilitynames[i].c_val != -1; i++ )
  65.   if( !stricmp( msg, facilitynames[i].c_name ) )
  66.     return( facilitynames[i].c_val );
  67. return( -1 );
  68. }
  69. int syslog( DWORD host, int file, int level, char *msg )
  70. {
  71.     udp_Socket *s;
  72.     char *p;
  73.     int len, res = -1;
  74.     s = kcalloc( sizeof( udp_Socket ), 1 );
  75.     if ( s == NULL ) return( -1 );
  76.     len = strlen( msg );
  77.     p = kcalloc( len + 8, 1 );
  78.     if ( p == NULL ) {
  79.         kfree( s );
  80.         return( -1 );
  81.     }
  82.     *p = '<';
  83.     itoa( level + file, p + 1, 10 );
  84.     strcat( p, ">");
  85.     strcat( p, msg );
  86.     if (udp_open( s, 0, host, SYSLOG_PORT, NULL )) {
  87.         sock_write( s, p, strlen( p ));
  88.         res = 0;
  89.         sock_close( s );
  90.     }
  91.     kfree( p );
  92.     kfree( s );
  93.     return( res );
  94. }