- new_arcq[i].arcq_msgnum = msgnum[i];
- new_arcq[i].arcq_delta = incr;
- }
- rv = 0;
- offset = 0;
- while ((rv >= 0) && (offset < the_size))
- {
- rv = fwrite(new_arcq + offset, 1, the_size - offset, arcfp);
- if (rv == -1) {
- syslog(LOG_EMERG, "%s: %s", file_arcq, strerror(errno));
- }
- else {
- offset += rv;
- }
- }
- free(new_arcq);
- fflush(arcfp);
-
- return;
-}
-
-
-/*
- * TDAP_ProcessAdjRefCountQueue()
- *
- * Process the queue of message count adjustments that was created by calls
- * to AdjRefCount() ... by reading the queue and calling TDAP_AdjRefCount()
- * for each one. This should be an "off hours" operation.
- */
-int TDAP_ProcessAdjRefCountQueue(void)
-{
- char file_arcq_temp[PATH_MAX];
- int r;
- FILE *fp;
- struct arcq arcq_rec;
- int num_records_processed = 0;
-
- snprintf(file_arcq_temp, sizeof file_arcq_temp, "%s.%04x", file_arcq, rand());
-
- begin_critical_section(S_SUPPMSGMAIN);
- if (arcfp != NULL) {
- fclose(arcfp);
- arcfp = NULL;
- }
-
- r = link(file_arcq, file_arcq_temp);
- if (r != 0) {
- syslog(LOG_ERR, "%s: %s", file_arcq_temp, strerror(errno));
- end_critical_section(S_SUPPMSGMAIN);
- return(num_records_processed);
- }
-
- unlink(file_arcq);
- end_critical_section(S_SUPPMSGMAIN);
-
- fp = fopen(file_arcq_temp, "rb");
- if (fp == NULL) {
- syslog(LOG_ERR, "%s: %s", file_arcq_temp, strerror(errno));
- return(num_records_processed);