⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slog.c

📁 牛顿插值方法求解多项式的系数
💻 C
字号:
/* * (c) Copyright 1992, 1993 by Panagiotis Tsirigotis * All rights reserved.  The file named COPYRIGHT specifies the terms  * and conditions for redistribution. */#include "config.h"#ifndef NO_SYSLOG#include <syslog.h>#endif#include "xlog.h"#include "impl.h"#include "slog.h"#include "str.h"#include <stdarg.h>#define MSGBUFSIZE         2048static int syslog_init(xlog_s *, va_list) ;static void syslog_fini(xlog_s *) ;static int syslog_control(xlog_s *, xlog_cmd_e, va_list ) ;static int syslog_write(xlog_s *, const char buf[], int , int , va_list ) ;static int syslog_parms(xlog_e, va_list) ;static struct syslog_parms parms ={      0,#ifndef NO_SYSLOG      LOG_PID + LOG_NOWAIT,      LOG_USER,#else      0,      0,#endif      "XLOG",} ;struct xlog_ops __xlog_syslog_ops =   {      syslog_init,      syslog_fini,      syslog_write,      syslog_control,      syslog_parms   } ;#ifdef NO_SYSLOG/* * Notice that the following functions will never be invoked since * the xlog_* functions will not call them. However, we need to define * them so that we don't have any unresolved references; and we define  * them without any arguments. */static void syslog(){}static void openlog(){}static void closelog(){}#endif   /* NO_SYSLOG *//* * Expected arguments: *      facility, level */static int syslog_init( xlog_s *xp, va_list ap ){   struct syslog_parms   *slp = &parms ;   struct syslog_s                 *sp ;   sp = NEW( struct syslog_s ) ;   if ( sp == NULL )      return( XLOG_ENOMEM ) ;   sp->sl_facility = va_arg( ap, int ) ;   sp->sl_default_level = va_arg( ap, int ) ;   if ( slp->slp_n_xlogs++ == 0 )      openlog( slp->slp_ident, slp->slp_logopts, slp->slp_facility ) ;   xp->xl_data = sp ;   return( XLOG_ENOERROR ) ;}static void syslog_fini( xlog_s *xp ){   if ( --parms.slp_n_xlogs == 0 )      closelog() ;   free( SYSLOG( xp ) ) ;   xp->xl_data = NULL ;}static int syslog_control( xlog_s *xp, xlog_cmd_e cmd, va_list ap ){   switch ( cmd )   {      case XLOG_LEVEL:         SYSLOG( xp )->sl_default_level = va_arg( ap, int ) ;         break ;      case XLOG_FACILITY:         SYSLOG( xp )->sl_facility = va_arg( ap, int ) ;         break ;            case XLOG_PREEXEC:         closelog() ;         break ;      case XLOG_POSTEXEC:         if ( parms.slp_n_xlogs )            openlog( parms.slp_ident, parms.slp_logopts, parms.slp_facility ) ;         break ;      /* These fall through ? */      case XLOG_LINK:      case XLOG_CALLBACK:      case XLOG_GETFLAG:      case XLOG_SETFLAG:       case XLOG_SIZECHECK:      case XLOG_GETFD:      case XLOG_LIMITS:         break ;   }   return( XLOG_ENOERROR ) ;}static int syslog_write( xlog_s *xp, const char buf[], int len, int flags, va_list ap ){   int   level ;   int   syslog_arg ;   char   prefix[ MSGBUFSIZE ] ;   int   prefix_size = sizeof( prefix ) ;   int   prefix_len = 0 ;   int   cc ;   int   percent_m_pos ;   int   action_flags = ( flags | xp->xl_flags ) ;   if ( flags & XLOG_SET_LEVEL )      level = va_arg( ap, int ) ;   else      level = SYSLOG( xp )->sl_default_level ;   syslog_arg = SYSLOG( xp )->sl_facility + level ;   if ( action_flags & XLOG_PRINT_ID )   {      cc = strx_nprint( &prefix[ prefix_len ], prefix_size, "%s: ",                     xp->xl_id ) ;      prefix_len += cc ;      prefix_size -= cc ;   }   if ( ( action_flags & XLOG_NO_ERRNO ) ||                  ( percent_m_pos = __xlog_add_errno( buf, len ) ) == -1 )      syslog( syslog_arg, "%.*s%.*s", prefix_len, prefix, len, buf ) ;   else   {      char *ep ;      char errno_buf[ 100 ] ;      unsigned size = sizeof( errno_buf ) ;            ep = __xlog_explain_errno( errno_buf, &size ) ;      syslog( syslog_arg, "%.*s%.*s%.*s%.*s",            prefix_len, prefix,               percent_m_pos, buf,                  (int)size, ep,                     len - percent_m_pos - 2, buf + percent_m_pos + 2 ) ;   }   return( XLOG_ENOERROR ) ;}static int syslog_parms( xlog_e type, va_list ap ){   char *id = NULL;   id = __xlog_new_string( va_arg( ap, char * ) );   if ( id == NULL )      return( XLOG_ENOMEM ) ;   parms.slp_ident = id ;   parms.slp_logopts = va_arg( ap, int ) ;   parms.slp_facility = va_arg( ap, int ) ;   return( XLOG_ENOERROR ) ;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -