home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / XGRP_000.SZH / MAKEREQ.C < prev    next >
C/C++ Source or Header  |  1991-05-20  |  3KB  |  91 lines

  1. /* make group update requests */
  2.  
  3. #include "xgroup.h"
  4.  
  5. /* external var references */
  6.  
  7. extern GROUP    *group;
  8. extern CONTROLS control;
  9. extern ADDR     *myaddr;
  10. extern ECHOREC  *echos;
  11. extern char     *groupin;
  12. extern char     *groupout;
  13. extern char     *grouphold;
  14. extern char     *msgdir;
  15. extern char     *outbound;
  16. extern char     *inbound;
  17. extern char     *archive;
  18. extern char     *unarchive;
  19. extern word     packsize;
  20. extern word     netarea;
  21. extern char     buffer[1024];
  22.  
  23.  
  24.  
  25. void _fastcall make_requests (void) {
  26.  
  27.     struct stat st;
  28.     GROUP       *currgroup;
  29.     int         handle;
  30.  
  31.  
  32.     currgroup = group;
  33.     while(currgroup) {
  34.         if(!currgroup->uplink) {
  35.             currgroup = currgroup->next;
  36.             continue;
  37.         }
  38.         sprintf(buffer,"%s/%s.!",groupout,currgroup->id);
  39.         if(stat(buffer,&st)) st.st_mtime = time(NULL);
  40.         if(!control.xbbsos2) {
  41.             if(currgroup->uplink->zone == myaddr->zone) {
  42.                 sprintf(buffer,"%s/%04x%04x.REQ",outbound,
  43.                         currgroup->uplink->net,currgroup->uplink->node);
  44.             }
  45.             else {
  46.                 sprintf(buffer,"%s.%03x/%04x%04x.REQ",outbound,
  47.                         currgroup->uplink->zone,currgroup->uplink->net,
  48.                         currgroup->uplink->node);
  49.             }
  50.             handle = sopen(buffer,O_RDWR | O_BINARY,SH_DENYWR);
  51.             if(handle == -1) {
  52.                 currgroup = currgroup->next;
  53.                 continue;
  54.             }
  55.             lseek(handle,0L,SEEK_END);
  56.             if(currgroup->password) {
  57.                 ffprintf(handle,"%s.* %s +%lu\r\n",currgroup->id,
  58.                          currgroup->password,st.st_mtime);
  59.             }
  60.             else {
  61.                 ffprintf(handle,"%s.* +%lu\r\n",currgroup->id,st.st_mtime);
  62.             }
  63.             close(handle);
  64.             logf("Requested %s",currgroup->id);
  65.         }
  66.         else {
  67.             sprintf(buffer,"%s/R.%u.%u.%u.%u.%s",outbound,
  68.                     currgroup->uplink->zone,currgroup->uplink->net,
  69.                     currgroup->uplink->node,currgroup->uplink->point,
  70.                     currgroup->uplink->domain);
  71.             handle = sopen(buffer,O_RDWR | O_BINARY,SH_DENYWR);
  72.             if(handle == -1) {
  73.                 currgroup = currgroup->next;
  74.                 continue;
  75.             }
  76.             lseek(handle,0L,SEEK_END);
  77.             if(currgroup->password) {
  78.                 ffprintf(handle,"%s.* %s +%lu\r\n",currgroup->id,
  79.                          currgroup->password,st.st_mtime);
  80.             }
  81.             else {
  82.                 ffprintf(handle,"%s.* +%lu\r\n",currgroup->id,st.st_mtime);
  83.             }
  84.             close(handle);
  85.             logf("Requested %s",currgroup->id);
  86.  
  87.         }
  88.         currgroup = currgroup->next;
  89.     }
  90. }
  91.