#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <time.h>
#include <discuss/discuss.h>

extern char *sys_errlist[];
extern int sys_nerr;

int bsize;
char *buffer;

void dsinfo(char* host, char* path, int trans_num)
{
  name_blk meetings;
  mtg_info meeting_info;
  int result;
  trn_info2 trn_info;
  char **foo;

  initialize_dsc_error_table();

  meetings.hostname = host;
  meetings.pathname = path;
  meetings.user_id = "";
  meetings.aliases = NULL;
  meetings.status = 0;
  meetings.date_attended = 0;
  meetings.last = 0;

  printf("*** name-block info\n");
  printf("hostname:   %s\n",meetings.hostname);
  printf("pathname:   %s\n",meetings.pathname);
  printf("user ID:    %s\n",meetings.user_id);
  for (foo=meetings.aliases; (foo)&&(*foo); foo++)
    printf("alias:      %s\n",foo);
  printf("spare:      %s\n",meetings.spare);
  printf("status:     %d\n",meetings.status);
  printf("attended:   %s",ctime(&meetings.date_attended));
  printf("last:       %s\n\n",meetings.last);

  dsc_get_mtg_info(&meetings,&meeting_info,&result);
  if (result != 0) {
    printf("error getting meeting info for meeting '%s:%s': %s\n",
	    meetings.hostname, meetings.pathname,
	    error_message(result));
  }

  printf("*** meeting info\n");
  printf("version:    %d\n",meeting_info.version);
  printf("location:   %s\n",meeting_info.location);
  printf("long name:  %s\n",meeting_info.long_name);
  printf("chairman 1: %s\n",meeting_info.chairman);
  printf("first-last: %d-%d\n",meeting_info.first,meeting_info.last);
  printf("low-high:   %d-%d\n",meeting_info.lowest,meeting_info.highest);
  printf("created:    %s",ctime(&meeting_info.date_created));
  printf("modified:   %s",ctime(&meeting_info.date_modified));
  printf("public:     %d\n",meeting_info.public_flag);
  printf("access:     %s\n",meeting_info.access_modes);

  printf("*** name-block info\n");
  printf("hostname:   %s\n",meetings.hostname);
  printf("pathname:   %s\n",meetings.pathname);
  printf("user ID:    %s\n",meetings.user_id);
  for (foo=meetings.aliases; (foo)&&(*foo); foo++)
    printf("alias:      %s\n",foo);
  printf("spare:      %s\n",meetings.spare);
  printf("status:     %d\n",meetings.status);
  printf("attended:   %s",ctime(&meetings.date_attended));
  printf("last:       %s\n\n",meetings.last);

  dsc_get_trn_info2(&meetings,trans_num,&trn_info,&result);
  if (result != 0) {
    printf("error getting transaction info for %s[%d]: %s\n",
	     (char *) (rindex(meetings.pathname,'/')+1), trans_num,
	     error_message(result));
  }

  printf("*** transaction info\n");
  printf("version:    %d\n",trn_info.version);
  printf("current:    %d\n",trn_info.current);
  printf("prev,next:  %d,%d\n",trn_info.prev,trn_info.next);
  printf("pref,nref:  %d,%d\n",trn_info.pref,trn_info.nref);
  printf("fref,lref:  %d,%d\n",trn_info.fref,trn_info.lref);
  printf("chain idx:  %d\n",trn_info.chain_index);
  printf("entered:    %s",ctime(&trn_info.date_entered));
  printf("num lines:  %d\n",trn_info.num_lines);
  printf("num chars:  %d\n",trn_info.num_chars);
  printf("subject:    %s\n",trn_info.subject);
  printf("author:     %s\n",trn_info.author);
  printf("flags:      %d\n",trn_info.flags);

  printf("*** name-block info\n");
  printf("hostname:   %s\n",meetings.hostname);
  printf("pathname:   %s\n",meetings.pathname);
  printf("user ID:    %s\n",meetings.user_id);
  for (foo=meetings.aliases; (foo)&&(*foo); foo++)
    printf("alias:      %s\n",foo);
  printf("spare:      %s\n",meetings.spare);
  printf("status:     %d\n",meetings.status);
  printf("attended:   %s",ctime(&meetings.date_attended));
  printf("last:       %s\n\n",meetings.last);
}

char *name = "/usr/spool/discuss/\000abcdefghijklmnopqrstuvwxyz0123456789";

int main(int argc, char **argv)
{
  if (argc<3) exit(11);
  strcat(name, argv[2]);
  dsinfo(argv[1], name, atoi(argv[3]));
  return 0;
}
