/**********************************************************************
 * lucy_list.c -- question list routine for lucy
 *
 * $Source: /afs/athena.mit.edu/astaff/project/lucydev/src/RCS/lucy_list.c,v $
 * $Author: brlewis $
 * $Header: /afs/athena.mit.edu/astaff/project/lucydev/src/RCS/lucy_list.c,v 1.1 90/12/18 15:11:32 brlewis Exp Locker: brlewis $
 *
 * Copyright 1990 by the Massachusetts Institute of Technology.
 * For copying and distribution information, see the file
 * "mit-copyright.h".
 **********************************************************************/
#include "mit-copyright.h"

#ifndef lint
static char rcsid_lucy_list_c[] = "$Header: /afs/athena.mit.edu/astaff/project/lucydev/src/RCS/lucy_list.c,v 1.1 90/12/18 15:11:32 brlewis Exp Locker: brlewis $";
#endif /* lint */

#include <stdio.h>
#include "lucy/lucy.h"

void
lucy_list(argc, argv)
     int argc;
     char *argv[];
{
  long code;
  lucy_qident i;
  lucyqlist l, l1;

  if (argc > 2) {
    printf("Usage:  %s [question number]\n", argv[0]);
    return;
  }

  lucy_trn_info(0, NULL);
  if (argc == 2) {
    i = atoi(argv[1]);
  } else {
    code = lucy_nextq(LUCY_NULLQ, &i);
    if (code) {
      com_err(argv[0], code, "getting first question");
      return;
    }
  }
  while(i) {
    code = lucy_trn_info(i, &l);
    if (code) {
      com_err(argv[0], code, "looking at question %d", i);
      return;
    }
    code = lucy_trn_info(l->info.lref, &l1);
    if (code) {
      com_err(argv[0], code, "looking at transaction %d", l->info.lref);
      return;
    }
    printf("%4d %c%c%c%c %-43.43s %16.16s %8.8s\n", i,
	   (l->info.flags & LUCY_FORWARDED) ? 'F' : ' ',
	   (l->info.flags & LUCY_ANSWERED) ? 'A' : ' ',
	   (l->info.flags & LUCY_POSTED) ? 'P' : ' ',
	   (l->info.flags & LUCY_REPLIED) ? 'R' : ' ',
	   l->info.subject,
	   ctime(&(l->info.date_entered)),
	   l->info.author);
    if (argc == 2) {
      i = l->info.nref;
    } else {
      code = lucy_nextq(i, &i);
      if (code) {
	com_err(argv[0], code, "getting next question");
	return;
      }
    }
  }
  return;
}
