[comp.os.minix] Minix Bugs

cs504aa@unm-la.UUCP (David Barts) (05/12/87)

Does anyone have an index of articles pertaining to MINIX bugs
and their fixes?  If you do, I'd appreciate hearing from you.
Just send mail saying you have an index, not the index
itself, as I am not fond of 100K mail files....

Thanks in advance.
-- 
  David Barts  N5JRN      "The Boy in the Box"
  Arpa:  cs504aa@unm-la.lanl.gov  |  unm-la!cs504aa@lanl.arpa
  UUCP:  ...ihnp4!lanl!unm-la!cs504aa
  2m:  146.22in/146.82out  |  220:  222.34in/223.94out

TEMARI%ECAMV1.dnet.ge.com@vm1.nodak.edu (10/04/90)

I have just received minix 1.5 from PH and have just started getting
the minix list.  I have found some bugs:
* /dev/port not on boot diskettes
  file on an empty file gives a core dump
  invalid parameter given to term locks the shell
* client3 of amoeba has paren in wrong place
* permission error for root to search d--------- directory
           ...etc...

The ones with * i've read from messages and tried them
Also, I have read some comments in the programs I have gotten from the
archive sites about working around problems with minix.  Lets fix them!

    So here is what I would like to know
Is there anywhere out there a bug report and patch fixes for the bugs in minix.
If anyone could let me know I would really appreciate it.

Also, to start myself on a good foot on the net below I submit a calendar
program which will either tell you the day of the week a date
fell on or print out a calendar for the month.

Soon to come a two player nuclear war game!!!!!!

-------------------------------------------------------------------------
/* calendar.c */

#include <stdio.h>

#define	ULC	0xda	/* upper left hand corner */
#define	HL	0xc4	/* horizontal line */
#define	URC	0xbf	/* upper right hand corner */
#define	VL	0xb3	/* vertical line */
#define DT	0xc2	/* T down */
#define	UT	0xc1	/* T up */
#define	RT	0xc3	/* T right */
#define	LT	0xb4	/* T left */
#define	LRC	0xd9	/* lower right hand corner */
#define	LLC	0xc0	/* lower left hand corner */
#define CRO	0xc5	/* cross */

char	*week[7]={ "SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY",
		   "THURSDAY", "FRIDAY", "SATURDAY" };
char	*months[12]={ "JANUARY", "FEBRUARY", "MARCH", "APRIL",
		      "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER",
		      "OCTOBER", "NOVEMBER", "DECEMBER" };
char	*days[42] = { "  ", "  ", "  ", "  ", "  ", "  ", "  ",
		      "  ", "  ", "  ", "  ", "  ", "  ", "  ",
		      "  ", "  ", "  ", "  ", "  ", "  ", "  ",
		      "  ", "  ", "  ", "  ", "  ", "  ", "  ",
		      "  ", "  ", "  ", "  ", "  ", "  ", "  ",
		      "  ", "  ", "  ", "  ", "  ", "  ", "  " };
int	year[12]={ 31,28,31,30,31,30,31,31,30,31,30,31 };

int	inyear,inmonth,frstdy,leap,mntlst,mnthdy,i,j,i1,weeks,lstmnt;

int	gregor(inyear,inmonth,inday)
int	inyear,inmonth,inday;
{
int	iyear,icent,itemp,iday,imnth;
	iyear=inyear;
	if(inmonth<=2)iyear=iyear-1;
	icent=iyear/100;
	iyear=iyear%100;
	imnth=inmonth-2;
	if(imnth<=0) imnth+=12;
	itemp=(175*icent)/100;
	if((175*icent)%100) itemp++;
	iday=inday+((26*imnth-2)/10)-itemp+iyear+iyear/4;
	if(iday<0) iday+=700;
	return(1+(iday%7));
}
void	do_line(a,b,c,d)
	char	a,b,c,d;
{
	int	i;
	printf("%c",a);
	for(i=0;i<7;i++) {
		for(j=0;j<10;j++)
			printf("%c",b);
		if(i==6)
			printf("%c",d);
		else
			printf("%c",c);
	}
	printf("\n");
}

main(argc,argv)
int	argc;
char	*argv[];
{
	char	a,b;

	if(argc<2||argc>4) {
	   printf("usage is %s year month [day]\n",argv[0]);
	   exit(1);
	}
	inyear=atoi(argv[1]);
	inmonth=atoi(argv[2]);
	if(argc==4)
	   frstdy=atoi(argv[3]);
	else
	   frstdy=1;
	if(inyear<100) inyear+=1900;
	if(inmonth<1||inmonth>12) {
	   printf("Invalid month!\n");
	   exit(1);
	}
	if(inyear<1752||inyear>20000) {
	   printf("Invalid year!  Range is 1752-20000\n");
	   exit(1);
	}

	leap=0;
	if((inyear%4)==0) leap=1;
	if((inyear%100)==0) leap=0;
	if((inyear%400)==0) leap=1;
	if((inyear%2000)==0) leap=0;
	mntlst=year[inmonth-1];
	if(inmonth==2) mntlst+=leap;
	if(argc==4)
	   if(frstdy>mntlst) {
	      printf("Invalid day for the month of %s\n",months[inmonth-1]);
	      exit(1);
	   }
	mnthdy=gregor(inyear,inmonth,frstdy);

	if(argc==4)
	   printf("%d %s %d is %s\n",frstdy,
				     months[inmonth-1],
				     inyear,week[mnthdy-1]);
	if(argc==4)
	   return(0);

	do_line(ULC,HL,HL,URC);
	printf("%c  %-10s",VL,months[inmonth-1]);
	for(i=0;i<59;i++) printf(" ");
	printf("%4d %c\n",inyear,VL);
	printf("3  SUNDAY     MONDAY    TUESDAY   WEDNESDAY   THURSDAY    ");
	printf("FRIDAY    SATURDAY 3\n");
	do_line(RT,HL,DT,LT);
	i1=mnthdy+mntlst-1;
	for(i=mnthdy;i<=i1;i++)
	    sprintf(days[i-1],"%02d",i+1-mnthdy);
	weeks=i1/7;
	if(i1%7) weeks++;
	lstmnt=weeks*7;
	for(i=1;i<=lstmnt;i+=7) {
	    for(j=1;j<=7;j++)
		printf("%c%s        ",VL,days[i+j-2]);
	    printf("%c\n",VL);
	    for(j=1;j<=7;j++)
		printf("%c          ",VL);
	    printf("%c\n",VL);
	    if(i!=(lstmnt-6))
		do_line(RT,HL,CRO,LT);
	    else
		do_line(LLC,HL,UT,LRC);
	}
	return(0);
}