BUGS **** cal skips first week on months with first day on sat Yeah. Honestly, I'm not sure right now. But, then again, my brain is currently fried in multiple ways, so, we'll check again in the morning. -Kat cal gets months on some years wrong For instance, if you run `./cal 08 08`, the first day of the month is off by one day. It's weird, and I don't know why it happens. -Kat TODOS ***** wc needs multibyte support It's supposed to have a flag, -m, that counts characters, as opposed to -c which counts bytes (ASCII characters, if you will). We need to add in support for -m proper, using some form of multibyte. -Kat cal needs the ability to show a whole year calendar This needs to be done eventually. -Kat sh probably needs to be trashed and restarted When I started it, it was from a small online tutorial on the basics of how shells work. It was more a demonstration of things like forking and the execvp and waitpid functions. It wasn't actually intended to grow into a proper shell. As it stands this is just going to keep getting cobbled together until it collapses under its own weight. It's probably better to restart now, parse input using lex and yacc instead of doing it ourselves, and work from there on implementation of everything. We know the basics of how a shell does its thing (fork, execvp, waitpid), now to use that with newer knowledge of building language parsers with things like lex and yacc, getting command line arguments with getopts, and other things that will lead to a proper, fully-formed shell. -Kat UTILITIES ********* O - Done . - In progress > - To be done ? - Maybe? | - Working X - Needs fixing # - Incomplete M - man page needed UTILITY STATUS ======= ====== admin > ar > asa O | at > awk > basename O | batch > bc . #M cal . X#M calendar ? cat O | cflow > chgrp . X#M chmod > chown > cksum O | cmp O | comm > compress > cp > crontab > csplit > ctags > cut > cxref > date > dd > delta > df > diff > dirname O | du > echo O | ed > ex > expand O | expr > false O | file > find > fold > fort77 > fuser > gencat > get > getconf > grep > head O | iconv > id > ipcrm > ipcs > join > lex > link O | ln O | locale > localedef > logger O | M login > logname O | lp > ls > m4 > mailx . # make > man > mesg > mkdir > mkfifo O | M mknod > more > mv > netstat > newgrp > news ? nice > nl > nm > nohup > od ? paste > patch > pathchk > pax > ping > pr > printf > prs > ps > pwd O | qalter > qdel > qhold > qmove > qmsg > qrerun > qrls > qselect > qsig > qstat > qsub > renice > rev ? rm > rmdel > rmdir O | sact > sccs > sed > sh . X#M sleep O | sort > split > strings > strip > stty > tac ? tail > talk > tee O | tftp ? time > touch > tput > tr > true O | tsort > tty O | uname > uncompress > unexpand > unget > uniq > unlink > uucp > uudecode > uuencode > uustat > uux > val > vi > wc O | what > who > write > xargs > yacc > zcat > NOTES ***** Some things may get added: From the LSB: chfn, chsh, dmesg, egrep, fgrep, groupadd, groupdel, groupmod, groups, gunzip, gzip, hostname, install, killall, md5sum, mknod, mktemp, mount, passwd, pidof, sendmail, seq, shutdown, su, sync, tar, umount, useradd, userdel, usermod In general: a cobol compiler, a debugger, an assembler, look/spell, wall And some need to get defined: other news/calendar - Both are referenced in the "Rationale" section of The Open Group Base Specification Issue 7 as utilities that weren't included. Both sound kinda interesting. I kinda want to included them. Unfortunately, I have no clue what they are or how they work. So, either I need to dig 'em up and find out, or I need to define them myself. *GOOD NEWS!* I found the heirloom utility set, which includes both of these applications! Yay! notes on things not in POSIX or other standards: tac: it's basically cat but backwards rev: Reverses a file line-by-line So, POSIX-conformant applications are supposed to define the _POSIX_C_SOURCE macro with value 200809L to enable POSIX features and the macro _XOPEN_SOURCE with value 700 if they're XSI-compliant. For any XSI-compliant utilities, we really should define the _XOPEN_SOURCE macros; for any non-XSI-compliant applications, we should really define the _POSIX_C_SOURCE macro until such a time when/if they become XSI-compliant.