summaryrefslogtreecommitdiff
path: root/zwgc/subscriptions.c
diff options
context:
space:
mode:
Diffstat (limited to 'zwgc/subscriptions.c')
-rw-r--r--zwgc/subscriptions.c126
1 files changed, 32 insertions, 94 deletions
diff --git a/zwgc/subscriptions.c b/zwgc/subscriptions.c
index 0bdac84..e72963e 100644
--- a/zwgc/subscriptions.c
+++ b/zwgc/subscriptions.c
@@ -32,7 +32,6 @@ static char rcsid_subscriptions_c[] = "$Id$";
#include "error.h"
#include "file.h"
#include "main.h"
-#include "zutils.h"
/****************************************************************************/
/* */
@@ -129,8 +128,6 @@ void unpunt(class, instance, recipient)
int_dictionary_Delete(puntable_addresses_dict, binding);
}
-#if 0
-
/****************************************************************************/
/* */
/* Code to implement batching [un]subscription requests: */
@@ -164,7 +161,7 @@ static void free_subscription_list(list, number_of_elements)
static void flush_subscriptions()
{
- TRAP(ZSubscribeTo(NULL, subscription_list,subscription_list_size, 0),
+ TRAP(ZSubscribeTo(subscription_list,subscription_list_size, 0),
"while subscribing");
free_subscription_list(subscription_list, subscription_list_size);
@@ -174,8 +171,7 @@ static void flush_subscriptions()
static void flush_unsubscriptions()
{
if (unsubscription_list_size)
- TRAP(ZUnsubscribeTo(NULL, unsubscription_list,
- unsubscription_list_size, 0),
+ TRAP(ZUnsubscribeTo(unsubscription_list, unsubscription_list_size, 0),
"while unsubscribing");
free_subscription_list(unsubscription_list, unsubscription_list_size);
@@ -236,7 +232,7 @@ static void inithosts()
strncpy(ourhostcanon, ourhost, sizeof(ourhostcanon)-1);
return;
}
- (void) strncpy(ourhostcanon,hent->h_name, sizeof(ourhostcanon)-1);
+ strncpy(ourhostcanon, hent->h_name, sizeof(ourhostcanon)-1);
return;
}
@@ -321,28 +317,19 @@ static void load_subscriptions_from_file(file)
fclose(file);
}
-#endif /* 0 */
-
#define DEFSUBS "/dev/null"
static void load_subscriptions()
{
- char subsname[MAXPATHLEN];
- int i, cnt;
- char *home, *galaxy;
-
- if (subscriptions_filename_override) {
- strcpy(subsname, subscriptions_filename_override);
- } else if (home = get_home_directory()) {
- strcpy(subsname, home?home:"");
- strcat(subsname, "/");
- strcat(subsname, USRSUBS);
- } else {
- strcpy(subsname, "");
- }
-
- FATAL_TRAP(load_all_sub_files(SUB, *subsname?subsname:NULL),
- "while loading subscription files");
+ FILE *subscriptions_file;
+
+ /* no system default sub file on client--they live on the server */
+ /* BUT...we need to use something to call load_subscriptions_from_file,
+ so we use /dev/null */
+ subscriptions_file = locate_file(subscriptions_filename_override,
+ USRSUBS, DEFSUBS);
+ if (subscriptions_file)
+ load_subscriptions_from_file(subscriptions_file);
}
/****************************************************************************/
@@ -353,94 +340,45 @@ static void load_subscriptions()
int zwgc_active = 0;
-static ZSubscription_t **saved_subscriptions = NULL;
-static int *number_of_saved_subscriptions;
+static ZSubscription_t *saved_subscriptions = NULL;
+static int number_of_saved_subscriptions;
void zwgc_shutdown()
{
- int cnt, i;
- char *galaxy;
-
if (!zwgc_active)
return;
- TRAP(ZGetGalaxyCount(&cnt), "while getting galaxy count");
+ TRAP(ZRetrieveSubscriptions(0, &number_of_saved_subscriptions),
+ "while retrieving zephyr subscription list");
if (error_code)
- return;
-
- if ((saved_subscriptions =
- (ZSubscription_t **) malloc(sizeof(ZSubscription_t *)*cnt)) == NULL) {
- fprintf(stderr, "out of memory allocating list of subscription lists");
- return;
- }
- if ((number_of_saved_subscriptions =
- (int *) malloc(sizeof(int)*cnt)) == NULL) {
- fprintf(stderr,
- "out of memory allocating number of subscription lists");
- return;
- }
-
- for (i=0; i<cnt; i++) {
- TRAP(ZGetGalaxyName(i, &galaxy), "while getting galaxy name")
- if (error_code)
- continue;
-
- TRAP(ZRetrieveSubscriptions(galaxy, 0,
- &number_of_saved_subscriptions[i]),
- "while retrieving zephyr subscription list");
- if (error_code)
- return;
-
- saved_subscriptions[i] = (ZSubscription_t *)
- malloc(number_of_saved_subscriptions[i]*sizeof(ZSubscription_t));
-
- if (number_of_saved_subscriptions[i])
- TRAP(ZGetSubscriptions(saved_subscriptions[i],
- &number_of_saved_subscriptions[i]),
- "while getting subscriptions");
- if (error_code) {
- free(saved_subscriptions[i]);
- saved_subscriptions[i] = NULL;
- }
- TRAP(ZCancelSubscriptions(galaxy, 0), "while canceling subscriptions");
+ return;
+ saved_subscriptions = (ZSubscription_t *)
+ malloc(number_of_saved_subscriptions*sizeof(ZSubscription_t));
+ if (number_of_saved_subscriptions)
+ TRAP(ZGetSubscriptions(saved_subscriptions,
+ &number_of_saved_subscriptions),
+ "while getting subscriptions");
+ if (error_code) {
+ free(saved_subscriptions);
+ saved_subscriptions = NULL;
}
+ TRAP(ZCancelSubscriptions(0), "while canceling subscriptions") ;
zwgc_active = 0;
}
void zwgc_startup()
{
- int cnt, i;
- char *galaxy;
-
if (zwgc_active)
return;
if (saved_subscriptions) {
- TRAP(ZGetGalaxyCount(&cnt), "while getting galaxy count");
- if (error_code)
- return;
-
- for (i=0; i<cnt; i++) {
- TRAP(ZGetGalaxyName(i, &galaxy), "while getting galaxy name");
- if (error_code)
- continue;
-
- if (saved_subscriptions[i]) {
- TRAP(ZSubscribeToSansDefaults(galaxy, saved_subscriptions[i],
- number_of_saved_subscriptions[i],
- 0),
- "while resubscribing to zephyr messages");
- free(saved_subscriptions[i]);
- saved_subscriptions[i] = NULL;
- }
- }
-
+ TRAP(ZSubscribeToSansDefaults(saved_subscriptions,number_of_saved_subscriptions,0),
+ "while resubscribing to zephyr messages");
+ free(saved_subscriptions);
saved_subscriptions = NULL;
- } else {
- load_subscriptions();
- }
-
+ } else
+ load_subscriptions();
zwgc_active = 1;
}