Beispiel #1
0
main()
{
      int i;

      for (i = 0; i < 26; ++i)
            printf("%d%s\n", i, ordinal_text(i));
      return 0;
}
Beispiel #2
0
/*** Display the reminders a user has to them
     login is used to show information at the login prompt, otherwise user
     is just using the .reminder command.  stage is used for inputting of a new reminder
     ***/
void show_reminders(UR_OBJECT user, int stage)
{
	char temp[ARR_SIZE];
	int i,j,d,m,y,cnt_total=0,cnt_today=0,del,done;

	set_crash();
/* display manually */
if (!stage) {
  if (word_count<2) {
    write_user(user, "~OLNa prezretie:\n");
    write_user(user, "       reminder all\n       reminder today\n       reminder <d> [<m> [<y>]]\n");
    write_user(user, "~OLNa upravu:\n");
    write_user(user, "       reminder set\n       reminder del <number>\n");
    return;
    }
  /* display all the reminders a user has set */
  cnt_total=0;
  if (!strcasecmp("all",word[1])) {
    write_user(user, ascii_tline);
    write_user(user,"~CT| All your reminders                                                           |\n");
    write_user(user, ascii_line);
    for (i=0;i<MAX_REMINDERS;i++) {
      /* no msg set, then no reminder */
      if (!user->reminder[i].msg[0]) continue;
      vwrite_user(user,"~OL%2d) ~FT%d%s %s, %d~RS - (%d/%d/%d)\n",++cnt_total,user->reminder[i].day,ordinal_text(user->reminder[i].day),
	      month[user->reminder[i].month-1],user->reminder[i].year,user->reminder[i].day,user->reminder[i].month,user->reminder[i].year);
      vwrite_user(user,"    %s\n",user->reminder[i].msg);
      }
    if (!cnt_total) write_user(user,"You do not have reminders set.\n");
    write_user(user, ascii_bline);
    return;
    }
  /* display all the reminders a user has for today */
  if (!strcasecmp("today",word[1])) {
    d=tmday;
    m=tmonth+1;
    y=tyear;
    cnt_today=0;
    write_user(user, ascii_tline);
    write_user(user,"~CT| Your reminders for today are                                                 |\n");
    write_user(user, ascii_line);
    for (i=0,j=0;i<MAX_REMINDERS;i++) {
      if (user->reminder[i].day==d && user->reminder[i].month==m && user->reminder[i].year==y) {
	vwrite_user(user,"~OL%2d)~RS %s\n",++j,user->reminder[i].msg);
	cnt_today++;
        }
      }
    if (!cnt_today) write_user(user,"You do not have reminders set for today.\n");
    write_user(user, ascii_bline);
    return;
    }
  /* allow a user to set a reminder */
  if (!strcasecmp("set",word[1])) {
    cnt_total=0;
    /* check to see if there is enough space to add another reminder */
    for (i=0;i<MAX_REMINDERS;i++) if (!user->reminder[i].msg[0]) cnt_total++;
    if (!cnt_total) {
      write_user(user,"You already have the maximum amount of reminders set.\n");
      return;
      }
    user->temp_remind.day=0;
    user->temp_remind.month=0;
    user->temp_remind.year=0;
    user->temp_remind.msg[0]='\0';
    write_user(user,"Please enter a date for the reminder (1-31): ");
    user->misc_op=20;
    return;
    }
  /* allow a user to delete one of their reminders */
  if (!strcasecmp("del",word[1])) {
    if (word_count<3) {
      write_usage(user,"reminder del <cislo>");
      write_user(user,"   kde <cislo> moze byt prebrate z 'reminder all'");
      return;
      }
    del=atoi(word[2]);
    cnt_total=0;  done=0;
    for (i=0;i<MAX_REMINDERS;i++) {
      if (!user->reminder[i].msg[0]) continue;
      cnt_total++;
      if (cnt_total==del) {
	user->reminder[i].day=0;
	user->reminder[i].month=0;
	user->reminder[i].year=0;
	user->reminder[i].msg[0]='\0';
	done=1;  break;
        }
      }
    if (!done) {
      vwrite_user(user,"Sorry, could not delete reminder number ~OL%d~RS.\n",del);
      return;
      }
    vwrite_user(user,"You have now deleted reminder number ~OL%d~RS.\n",del);
    write_user_reminders(user);
    return;
    }
  /* view reminders for a particular day */
  if (word_count>4) {
    write_usage(user,"reminder <d> [<m> [<y>]]");
    write_user(user,"   kde <d> = den od 1 po 31\n");
    write_user(user,"       <m> = mesiac od 1 po 12\n");
    write_user(user,"       <y> = rok od 1 po 99, alebo 1800 az 3000\n");
    return;
    }
  /* full date given */
  if (word_count==4) {
    y=atoi(word[3]);
    m=atoi(word[2]);
    d=atoi(word[1]);
    /* assume that year give xx is y2k if xx!=99 */
    if (y==99) y+=1900;
    else if (y<99) y+=2000;
    if ((y>3000) || (y<1800) || !m || (m>12) || !d || (d>31)) {
      write_usage(user,"reminder <d> [<m> [<y>]]");
      write_user(user,"   kde <d> = den od 1 po 31\n");
      write_user(user,"       <m> = mesiac od 1 po 12\n");
      write_user(user,"       <y> = rok od 1 po 99, alebo 1800 az 3000\n");
      return;
      }
    }
  /* only date and month given, so show for this year */
  else if (word_count==3) {
    y=tyear;
    m=atoi(word[2]);
    d=atoi(word[1]);
    if (!m || (m>12) || !d || (d>31)) {
      write_usage(user,"reminder <d> [<m> [<y>]]");
      write_user(user,"   kde <d> = den od 1 po 31\n");
      write_user(user,"       <m> = mesiac od 1 po 12\n");
      write_user(user,"       <y> = rok od 1 po 99, alebo 1800 az 3000\n");
      return;
      }
    }
  /* only date given, so show for this month and year */
  else {
    y=tyear;
    m=tmonth+1;
    d=atoi(word[1]);
    if (!d || (d>31)) {
      write_usage(user,"reminder <d> [<m> [<y>]]");
      write_user(user,"   kde <d> = den od 1 po 31\n");
      write_user(user,"       <m> = mesiac od 1 po 12\n");
      write_user(user,"       <y> = rok od 1 po 99, alebo 1800 az 3000\n");
      return;
      }
    }
  write_user(user, ascii_line);
  sprintf(temp, "Your reminders for %d%s %s, %d", d, ordinal_text(d), month[m-1], y);
  vwrite_user(user,"~CT| %-76.76s |\n", temp);
  write_user(user, ascii_line);
  cnt_today=0;
  for (i=0;i<MAX_REMINDERS;i++) {
    if (user->reminder[i].day==d && user->reminder[i].month==m && user->reminder[i].year==y) {
      vwrite_user(user,"~OL%2d)~RS %s\n",i+1,user->reminder[i].msg);
      cnt_today++;
      }
    }
  if (!cnt_today) vwrite_user(user,"You have no reminders set for %d%s %s, %d\n",d,ordinal_text(d),month[m-1],y);
  write_user(user, ascii_bline);
  return;
  }

/* next stages of asking for a new reminder */
switch(stage) {
  case 1:
    if (!user->temp_remind.day || user->temp_remind.day>31) {
      write_user(user,"The day for the reminder must be between 1 and 31.\n");
      user->temp_remind.day=0;
      user->misc_op=0;
      return;
      }
    write_user(user,"Please enter a month (1-12): ");
    user->misc_op=21;
    return;
  case 2:
    if (!user->temp_remind.month || user->temp_remind.month>12) {
      write_user(user,"The month for the reminder must be between 1 and 12.\n");
      user->temp_remind.day=0;
      user->temp_remind.month=0;
      user->misc_op=0;
      return;
      }
    write_user(user,"Please enter a year (xx or 19xx or 20xx, etc, <return> for this year): ");
    user->misc_op=22;
    return;
  case 3:
    /* assume that year give xx is y2k if xx!=99 */
    if (user->temp_remind.year==99) user->temp_remind.year+=1900;
    else if (user->temp_remind.year<99) user->temp_remind.year+=2000;
    if ((user->temp_remind.year>3000) || (user->temp_remind.year<1800)) {
      write_user(user,"The year for the reminder must be between 1-99 or 1800-3000.\n");
      user->temp_remind.day=0;
      user->temp_remind.month=0;
      user->temp_remind.year=0;
      user->misc_op=0;
      return;
      }
    /* check to see if date has past - why put in a remind for a date that has? */
    if ((int)(ymd_to_scalar(user->temp_remind.year,user->temp_remind.month,user->temp_remind.day)) < (int)(ymd_to_scalar(tyear,tmonth+1,tmday))) {
      write_user(user,"That date has already passed so there's no point setting a reminder for it.\n");
      user->temp_remind.day=0;
      user->temp_remind.month=0;
      user->temp_remind.year=0;
      user->misc_op=0;
      return;
      }
    write_user(user,"Please enter reminder message:\n~FG>>~RS");
    user->misc_op=23;
    return;
  case 4:
    /* tell them they MUST enter a message */
    if (!user->temp_remind.msg[0]) {
      write_user(user,"Please enter reminder message:\n~FG>>~RS");
      user->misc_op=23;
      return;
      }
    /* add in first available slot */
    for (i=0;i<MAX_REMINDERS;i++) {
      if (!user->reminder[i].msg[0]) {
	user->reminder[i].day=user->temp_remind.day;
	user->reminder[i].month=user->temp_remind.month;
	user->reminder[i].year=user->temp_remind.year;
	strcpy(user->reminder[i].msg,user->temp_remind.msg);
	break;
        }
      }
    write_user(user,"You have set the following reminder:\n");
    vwrite_user(user,"(%d/%d/%d) %s\n\n",user->reminder[i].day,user->reminder[i].month,user->reminder[i].year,user->reminder[i].msg);
    write_user_reminders(user);
    user->misc_op=0;
    return;
  }
}