Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

rcs_prnt.cc File Reference

#include "rcs_defs.hh"
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include "rcs_prnt.hh"
#include "linklist.hh"

Include dependency graph for rcs_prnt.cc:

Include dependency graph

Go to the source code of this file.

Defines

#define DEBUG_MALLOC(x)   malloc(x)
#define DEBUG_FREE(x)   free(x)

Functions

double RCS_EXPORT etime (void)
 void (RCS_PASCAL RCS_FAR *rcs_print_notify)()=NULL
void RCS_EXPORT set_rcs_print_destination (RCS_PRINT_DESTINATION_TYPE _dest)
RCS_PRINT_DESTINATION_TYPE
RCS_EXPORT 
get_rcs_print_destination ()
char RCS_FAR **RCS_EXPORT get_rcs_lines_table ()
RCS_LINKED_LIST RCS_FAR *RCS_EXPORT get_rcs_print_list ()
int RCS_EXPORT get_rcs_print_list_size ()
void RCS_EXPORT set_rcs_print_list_sizing (int _new_max_size, LIST_SIZING_MODE _new_sizing_mode)
void RCS_EXPORT set_rcs_print_notify (RCS_PRINT_NOTIFY_FUNC_PTR _rcs_print_notify)
void RCS_EXPORT clean_print_list ()
void RCS_EXPORT output_print_list (int output_func(char RCS_FAR *))
int RCS_EXPORT count_characters_in_print_list ()
int RCS_EXPORT count_lines_in_print_list ()
void RCS_EXPORT convert_print_list_to_lines ()
void RCS_EXPORT update_lines_table ()
char RCS_FAR *RCS_EXPORT strip_control_characters (char RCS_FAR *_dest, char RCS_FAR *_src)
int RCS_EXPORT separate_words (char RCS_FAR **_dest, int _max, char RCS_FAR *_src)
int RCS_EXPORT rcs_vprint (char RCS_FAR *_fmt, va_list _args, int save_string)
int RCS_EXPORT rcs_puts (char RCS_FAR *_str)
int RCS_EXPORT rcs_fputs (char RCS_FAR *_str)
void RCS_EXPORT close_rcs_printing ()
int RCS_EXPORT set_rcs_print_file (char RCS_FAR *_file_name)
int RCS_EXPORT rcs_print (char RCS_FAR *_fmt,...)
int RCS_EXPORT set_print_rcs_error_info (const char *file, int line)
int RCS_EXPORT print_rcs_error_new (char RCS_FAR *_fmt,...)
int RCS_EXPORT rcs_print_debug (long flag_to_check, char RCS_FAR *_fmt,...)
void RCS_EXPORT set_rcs_print_flag (long flag_to_set)
void RCS_EXPORT clear_rcs_print_flag (long flag_to_clear)
int RCS_EXPORT rcs_print_sys_error (int error_source, char RCS_FAR *_fmt,...)
int RCS_EXPORT rcs_print_error (char RCS_FAR *_fmt,...)

Variables

RCS_LINKED_LIST RCS_FAR * rcs_print_list = NULL
char RCS_FAR ** rcs_lines_table = NULL
RCS_PRINT_DESTINATION_TYPE rcs_print_destination = RCS_PRINT_TO_STDOUT
int max_rcs_errors_to_print = 30
int rcs_errors_printed = 0
long rcs_print_mode_flags = PRINT_RCS_ERRORS
FILE * rcs_print_file_stream = NULL
char rcs_print_file_name [80] = "rcs_out.txt"
char last_error_bufs [4][100]
int error_bufs_initialized = 0
int last_error_buf_filled = 0
const char * rcs_error_filename = NULL
int rcs_error_linenum = -1


Define Documentation

#define DEBUG_MALLOC      malloc(x)
 

Definition at line 6 of file rcs_prnt.cc.

#define DEBUG_FREE      free(x)
 

Definition at line 7 of file rcs_prnt.cc.


Function Documentation

double RCS_EXPORT etime void   
 

Definition at line 164 of file _timer.c.

00165 {
00166 #ifdef VXWORKS
00167 #ifdef USE_CLOCK_GETTIME
00168   double retval;
00169   struct timespec ts;
00170 #endif
00171 #ifndef POWERPC
00172   if (etime_disabled)
00173     {
00174       return (etime_disable_time);
00175     }
00176   if (global_timer_available)
00177     {
00178       return (((double) get_Global_time ()) * (1E-6));
00179     }
00180 #endif
00181 
00182 #ifdef USE_CLOCK_GETTIME
00183   if (etime_disabled)
00184     {
00185       return (etime_disable_time);
00186     }
00187   if (clock_gettime (CLOCK_REALTIME, &ts))
00188     {
00189       /* rcs_print_error("clock_gettime: errno = %d %s\n", errno, strerror(errno)); */
00190     }
00191   retval = ((double) ts.tv_sec) + ((double) ts.tv_nsec) * 1e-9;
00192   return retval;
00193 #else
00194   if (etime_disabled)
00195     {
00196       return (etime_disable_time);
00197     }
00198   return ((double) tickGet ()) / ((double) sysClkRateGet ());
00199 #endif
00200 #define ETIME_RETURNED
00201 #endif
00202 
00203 #if defined (sunos4) || defined (LYNX) || defined(irix5) || defined(sparcworks_sun4)
00204   double retval = 0.0;
00205   static double last_retval = 0.0;
00206   static struct timeval last_tp;
00207 
00208   struct timeval tp;
00209   if (etime_disabled)
00210     {
00211       return (etime_disable_time);
00212     }
00213   if (gettimeofday (&tp, NULL) == -1)
00214     {
00215       rcs_print_error ("gettimeofday failed: (errno = %d) %s\n", errno,
00216                        strerror (errno));
00217       return 0.0;
00218     }
00219   retval = ((double) tp.tv_sec) + (((double) tp.tv_usec) / 1000000.0);
00220   return (retval);
00221 #define ETIME_RETURNED
00222 #endif
00223 
00224 #if defined(sunos5) || (defined(os5) && defined(sparc))  || defined(irix6) || defined(irix64)
00225   double retval;
00226   struct timespec ts;
00227 
00228   if (etime_disabled)
00229     {
00230       return (etime_disable_time);
00231     }
00232   if (clock_gettime (CLOCK_REALTIME, &ts))
00233     {
00234       rcs_print_error ("clock_gettime: errno = %d %s\n", errno,
00235                        strerror (errno));
00236     }
00237   retval = ((double) ts.tv_sec) + ((double) ts.tv_nsec) * 1e-9;
00238   return retval;
00239 #define ETIME_RETURNED
00240 #endif
00241 
00242 #if defined(LINUX) || defined(darwin) || defined(qnx)
00243 
00244   struct timeval tp;
00245   double retval;
00246 #if 0
00247   static double last_retval = 0.0;
00248 #endif
00249 
00250   if (0 != gettimeofday (&tp, NULL))
00251     {
00252       rcs_print_error ("etime: can't get time\n");
00253       return 0.0;
00254     }
00255 
00256   retval = ((double) tp.tv_sec) + ((double) tp.tv_usec) / 1000000.0;
00257 #if 0
00258   if (retval < last_retval)
00259     {
00260       rcs_print_error ("etime: negative time interval\n");
00261       return 0.0;
00262     }
00263   last_retval = retval;
00264 #endif
00265   return retval;
00266 
00267 #define ETIME_RETURNED
00268 #endif /* LINUX */
00269 
00270 #ifdef _Windows
00271 #ifdef USE_TOOL_HELP
00272 /* The TimerCount function is more accurate than the GetTickCount() function
00273 but you need toolhelp.dll which comes with Windows 3.1 but not Windows 3.0 or
00274 Windows NT */
00275   TIMERINFO timer_info;
00276   if (etime_disabled)
00277     {
00278       return (etime_disable_time);
00279     }
00280   if (TimerCount (&timer_info))
00281     {
00282       return ((double) timer_info.dwmsSinceStart / 1000.0);
00283     }
00284   else
00285     {
00286       rcs_print_error ("etime: TimerCount returned false.\n");
00287       return (0);
00288     }
00289 #define ETIME_RETURNED
00290 #else /* defined(_Windows) && defined(USE_TOOL_HELP) */
00291 #if defined(WIN32) && !defined(UNDER_CE)
00292   BOOL frequency_ok = 0;
00293   BOOL counter_ok = 0;
00294   LARGE_INTEGER frequency;
00295   LARGE_INTEGER counter;
00296   double dfreq;
00297   double dcount;
00298 #define TWO_TO_THIRTYTWO  (4294967296.00)
00299 #endif
00300 
00301   if (etime_disabled)
00302     {
00303       return (etime_disable_time);
00304     }
00305 #if defined(WIN32) && !defined(UNDER_CE)
00306   frequency_ok = QueryPerformanceFrequency (&frequency);
00307   counter_ok = QueryPerformanceCounter (&counter);
00308   if (frequency_ok && counter_ok)
00309     {
00310       dfreq = frequency.HighPart * TWO_TO_THIRTYTWO + frequency.LowPart;
00311       dcount = counter.HighPart * TWO_TO_THIRTYTWO + counter.LowPart;
00312       if (dfreq > 0.0 && dcount > 0.0)
00313         {
00314           return (dcount / dfreq);
00315         }
00316     }
00317 #endif
00318   return ((double) GetTickCount () / 1000.0);
00319 #define ETIME_RETURNED
00320 #endif /* defined(_Windows) && defined(USE_TOOL_HELP) */
00321 #endif
00322 
00323 #if  defined(__MSDOS__) && !defined(_Windows)
00324 #ifndef CLOCKS_PER_SECOND
00325 #define CLOCKS_PER_SECOND CLK_TCK
00326 #endif
00327   if (etime_disabled)
00328     {
00329       return (etime_disable_time);
00330     }
00331   return clock () / CLOCKS_PER_SECOND;
00332 #define ETIME_RETURNED
00333 
00334 #endif /* __MSDOS__ */
00335 
00336 #ifndef ETIME_RETURNED
00337 #error NO definition for etime for this platform
00338 #endif
00339 }

void RCS_PASCAL RCS_FAR *    RCS_PRINT_NOTIFY_FUNC_PTR
 

void RCS_EXPORT set_rcs_print_destination RCS_PRINT_DESTINATION_TYPE    _dest
 

Definition at line 109 of file rcs_prnt.cc.

00110 {
00111   if (rcs_print_destination == RCS_PRINT_TO_NULL)
00112     {
00113       rcs_errors_printed = 0;
00114     }
00115   rcs_print_destination = _dest;
00116 }

RCS_PRINT_DESTINATION_TYPE RCS_EXPORT get_rcs_print_destination void   
 

Definition at line 119 of file rcs_prnt.cc.

Referenced by nmlWaitOpen().

00120 {
00121   return (rcs_print_destination);
00122 }

char RCS_FAR** RCS_EXPORT get_rcs_lines_table void   
 

Definition at line 129 of file rcs_prnt.cc.

Referenced by main().

00131 {
00132   return (rcs_lines_table);
00133 }

RCS_LINKED_LIST RCS_FAR* RCS_EXPORT get_rcs_print_list  
 

Definition at line 140 of file rcs_prnt.cc.

Referenced by main().

00142 {
00143   return (rcs_print_list);
00144 }

int RCS_EXPORT get_rcs_print_list_size void   
 

Definition at line 147 of file rcs_prnt.cc.

00148 {
00149   if (NULL != rcs_print_list)
00150     {
00151       return (rcs_print_list->list_size);
00152     }
00153   else
00154     {
00155       return (-1);
00156     }
00157 }

void RCS_EXPORT set_rcs_print_list_sizing int    _new_max_size,
LIST_SIZING_MODE    _new_sizing_mode
 

Definition at line 159 of file rcs_prnt.cc.

00161 {
00162   if (NULL == rcs_print_list)
00163     {
00164       rcs_print_list = new RCS_LINKED_LIST;
00165     }
00166   if (NULL != rcs_print_list)
00167     {
00168       rcs_print_list->set_list_sizing_mode (_new_max_size, _new_sizing_mode);
00169     }
00170 }

void RCS_EXPORT set_rcs_print_notify RCS_PRINT_NOTIFY_FUNC_PTR    _rcs_print_notify
 

Definition at line 172 of file rcs_prnt.cc.

00173 {
00174   rcs_print_notify = _rcs_print_notify;
00175 }

void RCS_EXPORT clean_print_list void   
 

Definition at line 178 of file rcs_prnt.cc.

Referenced by close_rcs_printing().

00179 {
00180   if (NULL != rcs_print_list)
00181     {
00182       delete rcs_print_list;
00183       rcs_print_list = NULL;
00184     }
00185 }

void RCS_EXPORT output_print_list int output_func(char RCS_FAR *)   
 

Definition at line 188 of file rcs_prnt.cc.

00189 {
00190   if (NULL != rcs_print_list)
00191     {
00192       char *string_from_list;
00193       string_from_list = (char *) rcs_print_list->get_head ();
00194       while (NULL != string_from_list)
00195         {
00196           if (output_func (string_from_list) != EOF)
00197             {
00198               break;
00199             }
00200           string_from_list = (char *) rcs_print_list->get_next ();
00201         }
00202     }
00203 }

int RCS_EXPORT count_characters_in_print_list void   
 

Definition at line 206 of file rcs_prnt.cc.

00207 {
00208   int count = 0;
00209   if (NULL != rcs_print_list)
00210     {
00211       char *string_from_list;
00212       string_from_list = (char *) rcs_print_list->get_head ();
00213       while (NULL != string_from_list)
00214         {
00215           count += strlen (string_from_list);
00216           string_from_list = (char *) rcs_print_list->get_next ();
00217         }
00218     }
00219   return (count);
00220 }

int RCS_EXPORT count_lines_in_print_list void   
 

Definition at line 223 of file rcs_prnt.cc.

00224 {
00225   int count = 1;
00226   if (NULL != rcs_print_list)
00227     {
00228       char *string_from_list;
00229       string_from_list = (char *) rcs_print_list->get_head ();
00230       while (NULL != string_from_list)
00231         {
00232           char *line;
00233           line = strchr (string_from_list, '\n');
00234           while (NULL != line)
00235             {
00236               count++;
00237               line = strchr (line + 1, '\n');
00238             }
00239           string_from_list = (char *) rcs_print_list->get_next ();
00240         }
00241     }
00242   return (count);
00243 }

void RCS_EXPORT convert_print_list_to_lines void   
 

Definition at line 246 of file rcs_prnt.cc.

Referenced by update_lines_table().

00247 {
00248   char *temp_buf = NULL;
00249   static int last_id_converted = -1;
00250   if (NULL != rcs_print_list)
00251     {
00252       char *string_from_list;
00253       if (-1 == last_id_converted)
00254         {
00255           string_from_list = (char *) rcs_print_list->get_head ();
00256         }
00257       else
00258         {
00259           string_from_list =
00260             (char *) rcs_print_list->get_first_newer (last_id_converted);
00261         }
00262       while (NULL != string_from_list)
00263         {
00264           char *next_line;
00265           next_line = strchr (string_from_list, '\n');
00266           if (NULL == next_line)
00267             {
00268               if (NULL == temp_buf)
00269                 {
00270                   temp_buf = (char *) malloc (strlen (string_from_list) + 1);
00271                   strcpy (temp_buf, string_from_list);
00272                 }
00273               else
00274                 {
00275                   temp_buf = (char *) realloc (temp_buf,
00276                                                strlen (temp_buf)
00277                                                + strlen (string_from_list) +
00278                                                1);
00279                   strcat (temp_buf, string_from_list);
00280                 }
00281               rcs_print_list->delete_current_node ();
00282             }
00283           else
00284             {
00285               if (temp_buf != NULL)
00286                 {
00287                   temp_buf = (char *) realloc (temp_buf,
00288                                                strlen (temp_buf)
00289                                                + strlen (string_from_list) +
00290                                                1);
00291                   strcat (temp_buf, string_from_list);
00292                   rcs_print_list->delete_current_node ();
00293                   rcs_print_list->store_after_current_node (temp_buf,
00294                                                             strlen (temp_buf)
00295                                                             + 1, 1);
00296                   DEBUG_FREE (temp_buf);
00297                   temp_buf = NULL;
00298                 }
00299               else if (next_line[1] != 0)
00300                 {
00301                   rcs_print_list->store_after_current_node (next_line + 1,
00302                                                             strlen (next_line
00303                                                                     + 1) + 1,
00304                                                             1);
00305                   next_line[1] = 0;
00306                 }
00307             }
00308           string_from_list = (char *) rcs_print_list->get_next ();
00309         }
00310     }
00311   last_id_converted = rcs_print_list->get_newest_id ();
00312   if (temp_buf != NULL)
00313     {
00314       rcs_print_list->store_at_tail (temp_buf, strlen (temp_buf) + 1, 1);
00315       DEBUG_FREE (temp_buf);
00316       temp_buf = NULL;
00317     }
00318 }

void RCS_EXPORT update_lines_table void   
 

Definition at line 321 of file rcs_prnt.cc.

Referenced by main().

00322 {
00323   if (NULL != rcs_lines_table)
00324     {
00325       DEBUG_FREE (rcs_lines_table);
00326       rcs_lines_table = NULL;
00327     }
00328   if (NULL != rcs_print_list)
00329     {
00330       convert_print_list_to_lines ();
00331       rcs_lines_table = (char RCS_FAR **) malloc (sizeof (char *)
00332                                                   *
00333                                                   rcs_print_list->list_size);
00334       if (NULL != rcs_print_list)
00335         {
00336           char *string_from_list;
00337           string_from_list = (char *) rcs_print_list->get_head ();
00338           int i = 0;
00339           while (NULL != string_from_list)
00340             {
00341               rcs_lines_table[i] = string_from_list;
00342               i++;
00343               string_from_list = (char *) rcs_print_list->get_next ();
00344             }
00345         }
00346     }
00347 }

char RCS_FAR* RCS_EXPORT strip_control_characters char RCS_FAR *    _dest,
char RCS_FAR *    _src
 

Definition at line 354 of file rcs_prnt.cc.

00356 {
00357   static char line_buffer[255];
00358   char *destination;
00359 #ifndef UNDER_CE
00360   char *control_char_loc;
00361   if (NULL == _dest)
00362     {
00363       destination = line_buffer;
00364       if (strlen (_src) < 255)
00365         {
00366           strcpy (line_buffer, _src);
00367         }
00368       else
00369         {
00370           if (NULL == strpbrk (_src, "\n\r\t\b"))
00371             {
00372               return (_src);
00373             }
00374           else
00375             {
00376               return (NULL);
00377             }
00378         }
00379     }
00380   else
00381     {
00382       destination = _dest;
00383       if (_dest != _src)
00384         {
00385 #ifndef __CENTERLINE__          /*  CenterLine messed up string.h for C++ so that memmove will be undefined. */
00386           memmove (_dest, _src, strlen (_src));
00387 #else
00388           strcpy (line_buffer, _src);
00389           strcpy (_dest, line_buffer);
00390 #endif
00391         }
00392     }
00393   control_char_loc = strpbrk (destination, "\n\r\t\b");
00394   while (NULL != control_char_loc)
00395     {
00396       *control_char_loc = ' ';  /* Replace control character with SPACE */
00397       control_char_loc = strpbrk (control_char_loc, "\n\r\t\b");
00398     }
00399 #else
00400   if (NULL == _dest)
00401     {
00402       destination = line_buffer;
00403     }
00404   else
00405     {
00406       destination = _dest;
00407     }
00408   strcpy (destination, _src);
00409 #endif
00410   return (destination);
00411 
00412 }

int RCS_EXPORT separate_words char RCS_FAR **    _dest,
int    _max,
char RCS_FAR *    _src
 

Definition at line 420 of file rcs_prnt.cc.

00421 {
00422   static char word_buffer[256];
00423   int i;
00424   if (NULL == _dest || NULL == _src)
00425     {
00426       return -1;
00427     }
00428   if (strlen (_src) > 255)
00429     {
00430       return -1;
00431     }
00432   strcpy (word_buffer, _src);
00433   _dest[0] = strtok (word_buffer, " \n\r\t");
00434   for (i = 0; NULL != _dest[i] && i < _max - 1; i++)
00435     {
00436       _dest[i + 1] = strtok (NULL, " \n\r\t");
00437     }
00438   if (_dest[_max - 1] == NULL && i == _max - 1)
00439     {
00440       i--;
00441     }
00442   return (i + 1);
00443 }

int RCS_EXPORT rcs_vprint char RCS_FAR *    _fmt,
va_list    va_args,
int    save_string
 

Definition at line 446 of file rcs_prnt.cc.

00447 {
00448   static char temp_string[256];
00449 
00450   if (NULL == _fmt)
00451     {
00452       return (EOF);
00453     }
00454   if (strlen (_fmt) > 200)      /* Might overflow temp_string. */
00455     {
00456       return (EOF);
00457     }
00458 #ifndef UNDER_CE
00459   if (EOF == (int) vsprintf (temp_string, _fmt, _args))
00460     {
00461       return (EOF);
00462     }
00463 #else
00464   if (EOF == (int) RCS_CE_VSPRINTF (temp_string, _fmt, _args))
00465     {
00466       return (EOF);
00467     }
00468 #endif
00469   if (save_string)
00470     {
00471       if (!error_bufs_initialized)
00472         {
00473           memset (last_error_bufs[0], 0, 100);
00474           memset (last_error_bufs[1], 0, 100);
00475           memset (last_error_bufs[2], 0, 100);
00476           memset (last_error_bufs[3], 0, 100);
00477           error_bufs_initialized = 1;
00478         }
00479       last_error_buf_filled++;
00480       last_error_buf_filled %= 4;
00481       strncpy (last_error_bufs[last_error_buf_filled], temp_string, 99);
00482     }
00483   return (rcs_fputs (temp_string));
00484 }

int RCS_EXPORT rcs_puts char RCS_FAR *    _str
 

Definition at line 487 of file rcs_prnt.cc.

00488 {
00489   int retval, retval2;
00490   retval = rcs_fputs (_str);
00491   if (retval != EOF)
00492     {
00493       retval2 = rcs_fputs ("\n");
00494       if (retval2 != EOF)
00495         {
00496           retval += retval;
00497         }
00498       else
00499         {
00500           retval = EOF;
00501         }
00502     }
00503   return (retval);
00504 }

int RCS_EXPORT rcs_fputs char RCS_FAR *    _str
 

Definition at line 507 of file rcs_prnt.cc.

00508 {
00509   int retval = EOF;
00510   if (NULL != _str)
00511     {
00512       if (0 == _str[0])
00513         {
00514           return (0);
00515         }
00516       switch (rcs_print_destination)
00517         {
00518 #ifdef VXWORKS
00519         case RCS_PRINT_TO_LOGGER:
00520           retval = logMsg (_str, 0, 0, 0, 0, 0, 0);
00521           break;
00522 #else
00523         case RCS_PRINT_TO_LOGGER:
00524 #endif
00525 
00526         case RCS_PRINT_TO_STDOUT:
00527 #ifndef _WINDLL
00528 #ifdef UNDER_CE
00529 #ifdef UNICODE
00530           wchar_t wstr[256];
00531           RCS_CE_ASCII_TO_UNICODE (wstr, _str, 256);
00532           OutputDebugString (wstr);
00533 #else
00534           OutputDebugString (_str);
00535 #endif
00536 #else
00537 #ifdef WIN32
00538           if (!AllocConsoleCalled)
00539             {
00540               AllocConsoleRetVal = AllocConsole ();
00541               AllocConsoleCalled = TRUE;
00542             }
00543           OutputHandle = GetStdHandle (STD_OUTPUT_HANDLE);
00544           if (NULL == OutputHandle)
00545             {
00546               retval = fputs (_str, stdout);
00547               fflush (stdout);
00548             }
00549           else
00550             {
00551               DWORD bytes_written;
00552               WriteConsole (OutputHandle, _str, strlen (_str),
00553                             (LPDWORD) & bytes_written, NULL);
00554               retval = (int) bytes_written;
00555             }
00556 #else
00557           retval = fputs (_str, stdout);
00558           fflush (stdout);
00559 #endif
00560 #endif
00561 #endif
00562           break;
00563 
00564         case RCS_PRINT_TO_STDERR:
00565 #ifndef UNDER_CE
00566           retval = fputs (_str, stderr);
00567           fflush (stderr);
00568 #endif
00569           break;
00570 
00571         case RCS_PRINT_TO_LIST:
00572           if (NULL == rcs_print_list)
00573             {
00574               rcs_print_list = new RCS_LINKED_LIST;
00575               if (NULL != rcs_print_list)
00576                 {
00577                   rcs_print_list->set_list_sizing_mode (256,
00578                                                         DELETE_FROM_HEAD);
00579                 }
00580             }
00581           if (NULL != rcs_print_list)
00582             {
00583               if (-1 ==
00584                   rcs_print_list->store_at_tail (_str,
00585                                                  (retval =
00586                                                   strlen (_str)) + 1, 1))
00587                 {
00588                   retval = EOF;
00589                 }
00590             }
00591           break;
00592         case RCS_PRINT_TO_NULL:
00593           retval = strlen (_str);
00594           break;
00595         case RCS_PRINT_TO_FILE:
00596 #ifndef UNDER_CE
00597           if (NULL == rcs_print_file_stream)
00598             {
00599               if (NULL == rcs_print_file_name)
00600                 {
00601                   return EOF;
00602                 }
00603               rcs_print_file_stream = fopen (rcs_print_file_name, "a+");
00604             }
00605           if (NULL == rcs_print_file_stream)
00606             {
00607               return EOF;
00608             }
00609           retval = fputs (_str, rcs_print_file_stream);
00610           fflush (rcs_print_file_stream);
00611 #endif
00612           break;
00613 
00614 #if  defined(_Windows) && !defined(gnuwin32)
00615         case RCS_PRINT_TO_MESSAGE_BOX:
00616 #ifdef UNICODE
00617           wchar_t wstr2[256];
00618           RCS_CE_ASCII_TO_UNICODE (wstr2, _str, 256);
00619           retval = strlen (_str);
00620           if (IDOK != MessageBox (NULL, wstr2, TEXT ("RCS Message"), MB_OK))
00621             {
00622               retval = EOF;
00623             }
00624 #else
00625           retval = strlen (_str);
00626           if (IDOK != MessageBox (NULL, _str, "RCS Message", MB_OK))
00627             {
00628               retval = EOF;
00629             }
00630 #endif
00631           break;
00632 #endif
00633 
00634         default:
00635           break;
00636         }
00637       if (NULL != rcs_print_notify)
00638         {
00639           (*rcs_print_notify) ();
00640         }
00641     }
00642   return (retval);
00643 }

void RCS_EXPORT close_rcs_printing void   
 

Definition at line 646 of file rcs_prnt.cc.

00647 {
00648 #ifndef UNDER_CE
00649   switch (rcs_print_destination)
00650     {
00651     case RCS_PRINT_TO_LIST:
00652       clean_print_list ();
00653       break;
00654 
00655     case RCS_PRINT_TO_FILE:
00656       if (NULL != rcs_print_file_stream)
00657         {
00658           fclose (rcs_print_file_stream);
00659           rcs_print_file_stream = NULL;
00660         }
00661       break;
00662     default:
00663       break;
00664     }
00665 #endif
00666   return;
00667 }

int RCS_EXPORT set_rcs_print_file char RCS_FAR *    _file_name
 

Definition at line 670 of file rcs_prnt.cc.

00671 {
00672 #ifndef UNDER_CE
00673   if (_file_name == NULL)
00674     {
00675       return -1;
00676     }
00677   if (strlen (_file_name) > 80)
00678     {
00679       return -1;
00680     }
00681   strcpy (rcs_print_file_name, _file_name);
00682   if (NULL != rcs_print_file_stream)
00683     {
00684       fclose (rcs_print_file_stream);
00685     }
00686   rcs_print_file_stream = fopen (rcs_print_file_name, "a+");
00687   if (NULL == rcs_print_file_stream)
00688     {
00689       return -1;
00690     }
00691 #endif
00692   return 0;
00693 }

int RCS_EXPORT rcs_print char RCS_FAR *    _fmt,
...   
 

Definition at line 696 of file rcs_prnt.cc.

00697 {
00698   static char temp_buffer[256];
00699   int retval;
00700   va_list args;
00701   if (strlen (_fmt) > 250)
00702     {
00703       return EOF;
00704     }
00705   va_start (args, _fmt);
00706 #ifdef sparcworks_sun4          // this platform has vsprintf defined as
00707   // char *vsprintf(char *, const char *, va_list);
00708   // it should be
00709   // int vsprintf(char *, const char *, va_list);
00710   vsprintf (temp_buffer, _fmt, args);
00711   va_end (args);
00712 #else
00713 #ifndef UNDER_CE
00714   retval = vsprintf (temp_buffer, _fmt, args);
00715 #else
00716   retval = RCS_CE_VSPRINTF (temp_buffer, _fmt, args);
00717 #endif
00718   va_end (args);
00719   if (retval == (EOF))
00720     {
00721       return EOF;
00722     }
00723 #endif
00724   retval = rcs_fputs (temp_buffer);
00725   return (retval);
00726 }

int RCS_EXPORT set_print_rcs_error_info const char *    file,
int    line
 

Definition at line 733 of file rcs_prnt.cc.

00734 {
00735   rcs_error_filename = file;
00736   rcs_error_linenum = line;
00737   return (0);
00738 }

int RCS_EXPORT print_rcs_error_new char RCS_FAR *    _fmt,
...   
 

Definition at line 742 of file rcs_prnt.cc.

00743 {
00744   int retval = 0;
00745   va_list args;
00746   va_start (args, _fmt);
00747   if ((rcs_print_mode_flags & PRINT_RCS_ERRORS)
00748       && ((max_rcs_errors_to_print >= rcs_errors_printed)
00749           || max_rcs_errors_to_print < 0))
00750     {
00751       if (NULL != rcs_error_filename && rcs_error_linenum > 0)
00752         {
00753           rcs_print ("%s %d: ", rcs_error_filename, rcs_error_linenum);
00754           rcs_error_filename = NULL;
00755           rcs_error_linenum = -1;
00756         }
00757       retval = rcs_vprint (_fmt, args, 1);
00758       if (max_rcs_errors_to_print == rcs_errors_printed &&
00759           max_rcs_errors_to_print >= 0)
00760         {
00761           rcs_print ("\nMaximum number of errors to print exceeded!\n");
00762         }
00763     }
00764   if (rcs_print_destination != RCS_PRINT_TO_NULL)
00765     {
00766       rcs_errors_printed++;
00767     }
00768   va_end (args);
00769   return (retval);
00770 }

int RCS_EXPORT rcs_print_debug long    flag_to_check,
char RCS_FAR *    _fmt,
...   
 

Definition at line 776 of file rcs_prnt.cc.

00777 {
00778   int retval = 0;
00779   int pid = 0;
00780   va_list args;
00781   va_start (args, _fmt);
00782 
00783   if (flag_to_check & rcs_print_mode_flags)
00784     {
00785 #ifdef WIN32
00786       pid = GetCurrentProcessId ();
00787 #else
00788 #ifndef VXWORKS
00789       pid = getpid ();
00790 #else
00791       pid = taskIdSelf ();
00792 #endif
00793 #endif
00794       rcs_print ("(time=%f,pid=%d): ", etime (), pid);
00795       retval = rcs_vprint (_fmt, args, 0);
00796     }
00797   va_end (args);
00798   return (retval);
00799 }

void RCS_EXPORT set_rcs_print_flag long    flags_to_set
 

Definition at line 802 of file rcs_prnt.cc.

00803 {
00804   rcs_print_mode_flags |= flag_to_set;
00805 }

void RCS_EXPORT clear_rcs_print_flag long    flags_to_set
 

Definition at line 808 of file rcs_prnt.cc.

00809 {
00810   rcs_print_mode_flags &= ~(flag_to_clear);
00811 }

int RCS_EXPORT rcs_print_sys_error int    error_source,
char RCS_FAR *    _fmt,
...   
 

Definition at line 816 of file rcs_prnt.cc.

00817 {
00818   static char temp_string[256];
00819   static char message_string[512];
00820   va_list args;
00821   va_start (args, _fmt);
00822 
00823 
00824   if (NULL == _fmt)
00825     {
00826       return (EOF);
00827     }
00828   if (strlen (_fmt) > 200)      /* Might overflow temp_string. */
00829     {
00830       return (EOF);
00831     }
00832 #ifndef UNDER_CE
00833   if (EOF == (int) vsprintf (temp_string, _fmt, args))
00834     {
00835       return (EOF);
00836     }
00837 #else
00838   if (EOF == (int) RCS_CE_VSPRINTF (temp_string, _fmt, args))
00839     {
00840       return (EOF);
00841     }
00842 #endif
00843   va_end (args);
00844   if (max_rcs_errors_to_print == rcs_errors_printed &&
00845       max_rcs_errors_to_print >= 0)
00846     {
00847       rcs_print ("\nMaximum number of errors to print exceeded!\n");
00848     }
00849   rcs_errors_printed++;
00850   if (max_rcs_errors_to_print <= rcs_errors_printed &&
00851       max_rcs_errors_to_print >= 0)
00852     {
00853       return (EOF);
00854     }
00855 
00856   switch (error_source)
00857     {
00858     case ERRNO_ERROR_SOURCE:
00859 #ifndef UNDER_CE
00860       sprintf (message_string, "%s %d %s\n", temp_string, errno,
00861                strerror (errno));
00862 #endif
00863       rcs_puts (message_string);
00864       break;
00865 
00866 #ifndef UNDER_CE
00867 #ifdef WIN32
00868     case GETLASTERROR_ERROR_SOURCE:
00869       {
00870         char *msgBuf = NULL;
00871         DWORD errCode = GetLastError ();
00872         FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |
00873                        FORMAT_MESSAGE_FROM_SYSTEM, NULL, errCode,
00874                        MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
00875                        (LPTSTR) & msgBuf, 0, NULL);
00876         if (NULL != msgBuf)
00877           {
00878             sprintf (message_string, "%s %d %s\n", temp_string, errCode,
00879                      msgBuf);
00880           }
00881         else
00882           {
00883             sprintf (message_string, "%s %d\n", temp_string, errCode);
00884           }
00885       }
00886       rcs_puts (message_string);
00887       break;
00888 
00889     case WSAGETLASTERROR_ERROR_SOURCE:
00890       {
00891         char *msgBuf = NULL;
00892         DWORD errCode = WSAGetLastError ();
00893         FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |
00894                        FORMAT_MESSAGE_FROM_SYSTEM, NULL, errCode,
00895                        MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
00896                        (LPTSTR) & msgBuf, 0, NULL);
00897         if (NULL != msgBuf)
00898           {
00899             sprintf (message_string, "%s %d %s\n", temp_string, errCode,
00900                      msgBuf);
00901           }
00902         else
00903           {
00904             sprintf (message_string, "%s %d\n", temp_string, errCode);
00905           }
00906       }
00907       rcs_puts (message_string);
00908       break;
00909 
00910 #endif
00911 #endif
00912 
00913     default:
00914       rcs_puts (temp_string);
00915       break;
00916     }
00917   return (strlen (temp_string));
00918 }

int RCS_EXPORT rcs_print_error char RCS_FAR *    _fmt,
...   
 

Definition at line 930 of file rcs_prnt.cc.

00931 {
00932   int retval = 0;
00933   va_list args;
00934 
00935   va_start (args, _fmt);
00936   if ((rcs_print_mode_flags & PRINT_RCS_ERRORS)
00937       && ((max_rcs_errors_to_print >= rcs_errors_printed)
00938           || max_rcs_errors_to_print < 0))
00939     {
00940       retval = rcs_vprint (_fmt, args, 1);
00941       if (max_rcs_errors_to_print == rcs_errors_printed &&
00942           max_rcs_errors_to_print >= 0)
00943         {
00944           rcs_print ("\nMaximum number of errors to print exceeded!\n");
00945         }
00946     }
00947   if (rcs_print_destination != RCS_PRINT_TO_NULL)
00948     {
00949       rcs_errors_printed++;
00950     }
00951   va_end (args);
00952   return (retval);
00953 }


Variable Documentation

RCS_LINKED_LIST RCS_FAR* rcs_print_list = NULL
 

Definition at line 75 of file rcs_prnt.cc.

char RCS_FAR** rcs_lines_table = NULL
 

Definition at line 76 of file rcs_prnt.cc.

RCS_PRINT_DESTINATION_TYPE rcs_print_destination = RCS_PRINT_TO_STDOUT
 

Definition at line 80 of file rcs_prnt.cc.

int max_rcs_errors_to_print = 30
 

Definition at line 94 of file rcs_prnt.cc.

int rcs_errors_printed = 0
 

Definition at line 95 of file rcs_prnt.cc.

long rcs_print_mode_flags = PRINT_RCS_ERRORS
 

Definition at line 97 of file rcs_prnt.cc.

FILE* rcs_print_file_stream = NULL
 

Definition at line 99 of file rcs_prnt.cc.

char rcs_print_file_name[80] = "rcs_out.txt"
 

Definition at line 100 of file rcs_prnt.cc.

char last_error_bufs[4][100]
 

Definition at line 103 of file rcs_prnt.cc.

int error_bufs_initialized = 0
 

Definition at line 104 of file rcs_prnt.cc.

int last_error_buf_filled = 0
 

Definition at line 105 of file rcs_prnt.cc.

const char* rcs_error_filename = NULL [static]
 

Definition at line 730 of file rcs_prnt.cc.

int rcs_error_linenum = -1 [static]
 

Definition at line 731 of file rcs_prnt.cc.


Generated on Sun Dec 2 15:57:49 2001 for rcslib by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001