home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 24 / AACD 24.iso / AACD / System / ReqToolsLib / Source / reqtools / misc.c < prev    next >
Encoding:
C/C++ Source or Header  |  2001-07-02  |  4.6 KB  |  200 lines

  1. #include "filereq.h"
  2.  
  3. #include <string.h>
  4.  
  5. #ifndef _AROS
  6. typedef void (*VOID_FUNC)();
  7. #endif
  8.  
  9. /****************************************************************************************/
  10.  
  11. void StrCat(char *s, char *s2)
  12. {
  13.     strcat(s, s2);
  14. }
  15.  
  16. /****************************************************************************************/
  17.  
  18. static void filltable(char **table, char *buff, char fill)
  19. {
  20.     static char c;
  21.     
  22.     *table++ = buff;
  23.     
  24.     for(;;)
  25.     {
  26.          c = *buff++;
  27.      if (c == '\0') break;
  28.      if (c == fill)
  29.      {
  30.          buff[-1] = '\0';
  31.          *table++ = buff;
  32.      }
  33.     }
  34. }
  35.  
  36. /****************************************************************************************/
  37.  
  38. void FillNewLineTable (char **table, char *buff)
  39. {
  40.     filltable(table, buff, '\n');
  41. }
  42.  
  43. /****************************************************************************************/
  44.  
  45. void FillBarTable (char **table, char *buff)
  46. {
  47.     filltable(table, buff,  '|');
  48. }
  49.  
  50. /****************************************************************************************/
  51.  
  52. #ifdef _AROS
  53. AROS_UFH2 (void, puttostr,
  54.     AROS_UFHA(UBYTE, chr, D0),
  55.     AROS_UFHA(STRPTR *,strPtrPtr,A3)
  56. )
  57. #else
  58. void puttostr(REGPARAM(d0, UBYTE, chr),
  59.               REGPARAM(a3, STRPTR *, strPtrPtr))
  60. #endif
  61. {
  62.     *(*strPtrPtr)= chr;
  63.     (*strPtrPtr) ++;
  64. }
  65.  
  66. /****************************************************************************************/
  67.  
  68. #ifdef _AROS
  69. AROS_UFH2 (void, CountBarsAndChars,
  70.     AROS_UFHA(UBYTE, chr, D0),
  71.     AROS_UFHA(ULONG *,ptr,A3)
  72. )
  73. #else
  74. void CountBarsAndChars(REGPARAM(d0, UBYTE, chr),
  75.                         REGPARAM(a3, ULONG *, ptr))
  76. #endif
  77. {
  78.     if (chr == '|') (ptr[0])++;
  79.     (ptr[1])++;
  80. }
  81.  
  82. /****************************************************************************************/
  83.  
  84. #ifdef _AROS
  85. AROS_UFH2 (void, CountNewLinesAndChars,
  86.     AROS_UFHA(UBYTE, chr, D0),
  87.     AROS_UFHA(ULONG *,ptr,A3)
  88. )
  89. #else
  90. void CountNewLinesAndChars(REGPARAM(d0, UBYTE, chr),
  91.                             REGPARAM(a3, ULONG *, ptr))
  92. #endif
  93. {
  94.     if (chr == '\n') (ptr[0])++;
  95.     (ptr[1])++;
  96. }
  97.  
  98. /****************************************************************************************/
  99.  
  100. APTR DofmtArgs (char *buff, char *fmt ,...)
  101. {
  102.     char *str = buff;
  103.  
  104. #warning fix vararg stuff
  105.     
  106.     return RawDoFmt(fmt, &fmt + 1, (VOID_FUNC)puttostr, &str);
  107. }
  108.  
  109. /****************************************************************************************/
  110.  
  111. APTR Dofmt (char *buff, char *fmt, APTR args)
  112. {
  113.     char *str = buff;
  114.  
  115.     return RawDoFmt(fmt, args, (VOID_FUNC)puttostr, &str);
  116.    
  117. }
  118.  
  119. /****************************************************************************************/
  120.  
  121. APTR DofmtCount (char *fmt, APTR args, ULONG *ptr, int mode)
  122. {
  123.     ptr[0] = ptr[1] = 1;
  124.     
  125.     return RawDoFmt(fmt,
  126.                 args,
  127.             (mode ? ((VOID_FUNC)CountBarsAndChars) : ((VOID_FUNC)CountNewLinesAndChars) ),
  128.             ptr); 
  129. }
  130.  
  131. /****************************************************************************************/
  132.  
  133. void ShortDelay(void)
  134. {
  135.     Delay(5);
  136. }
  137.  
  138. /****************************************************************************************/
  139.  
  140. ULONG LoopReqHandler(struct rtHandlerInfo *rthi)
  141. {
  142.     ULONG handler_retval, sigs;
  143.  
  144.     do
  145.     {
  146.        if (rthi->DoNotWait)
  147.         sigs = 0;
  148.     else
  149.         sigs = Wait(rthi->WaitMask);
  150.  
  151.     handler_retval = (ULONG)rtReqHandlerA(rthi, sigs, NULL);
  152.     
  153.     } while (handler_retval == CALL_HANDLER);
  154.     
  155.     return handler_retval;
  156.     
  157. }
  158.  
  159. /****************************************************************************************/
  160.  
  161. void DoWaitPointer(struct Window *win, int doit, int setpointer)
  162. {
  163.     if (win && doit)
  164.     {
  165.         if (setpointer)
  166.         rtSetWaitPointer(win);
  167.     else
  168.         ClearPointer(win);
  169.     }
  170.     
  171. }
  172.  
  173. /****************************************************************************************/
  174.  
  175. APTR DoLockWindow(struct Window *win, int doit, APTR lock, int lockit)
  176. {
  177.     if (!doit || !win) return NULL;
  178.     
  179.     if (lockit) return rtLockWindow(win);
  180.     
  181.     rtUnlockWindow(win, lock);
  182.     
  183.     return NULL;
  184. }
  185.  
  186. /****************************************************************************************/
  187.  
  188. void SetWinTitleFlash(struct Window *win, char *str)
  189. {
  190.     DisplayBeep(win->WScreen);
  191.     SetWindowTitles(win, str, (UBYTE *)-1);
  192. }
  193.  
  194. /****************************************************************************************/
  195. /****************************************************************************************/
  196. /****************************************************************************************/
  197. /****************************************************************************************/
  198. /****************************************************************************************/
  199. /****************************************************************************************/
  200.