340 Commits

Author SHA1 Message Date
Serge Vakulenko
3ee11917bb Add ili9341 sources from adafruit library, and nt35702 sources from elsewhere. 2015-10-30 20:44:07 -07:00
Serge Vakulenko
b259f58533 Virtualmips: merge changes from alexfru.
Fix bug in mips16 disassembler.
2015-10-30 10:47:11 -07:00
Serge Vakulenko
42fd2f99bd Remove unnecessary EHBs in kernel startup code. 2015-10-30 10:31:24 -07:00
Serge Vakulenko
ff8e4c81d0 Virtualmips: enhance printing of exception information. 2015-10-29 21:21:28 -07:00
Serge Vakulenko
691fdfaa2f Virtualmips: restored broken DI and EI instructions. 2015-10-29 21:06:56 -07:00
Serge Vakulenko
d8708af48a Virtualmips: handle overflow in div, add, addi and sub instructions. 2015-10-29 20:15:10 -07:00
Serge Vakulenko
7d3e799c82 Virtualmips: take CpU exception as expected. 2015-10-29 19:39:03 -07:00
Serge Vakulenko
91cbbfbad0 Virtualmips: SC instruction should take AdES exception even when LL bit is not set. 2015-10-29 19:01:19 -07:00
Serge Vakulenko
f87ab8d4c4 Virtualmips: remove unused opcodes. 2015-10-29 18:51:02 -07:00
Serge Vakulenko
37646559fd Virtualmips: implement CLO instruction. 2015-10-29 18:17:02 -07:00
Serge Vakulenko
1a5f550fe1 Virtualmips: merge changes from alexfru. 2015-10-29 18:11:41 -07:00
Serge Vakulenko
666f22786f Virtualmips: add DERET instruction. 2015-10-29 18:04:42 -07:00
Serge Vakulenko
8d15906495 Virtualmips: implement SDBBP instruction. 2015-10-29 17:44:44 -07:00
Serge Vakulenko
5bff2b428c Virtualmips: implement compare-and-trap instructions. 2015-10-29 14:02:08 -07:00
Serge Vakulenko
94d38c939f Virtualmips: fix disassembler for mips16e mode. 2015-10-29 13:34:45 -07:00
Serge Vakulenko
f2c4d11b74 Virtualmips: fix exception vectors. 2015-10-28 17:21:31 -07:00
Serge Vakulenko
ce4fbe98b7 Virtualmips: handle SRSCtl register as zero read-only. 2015-10-28 12:02:35 -07:00
Serge Vakulenko
ec2a748448 Virtualmips: implement magic opcodes. 2015-10-27 22:17:58 -07:00
Serge Vakulenko
ade0fff092 VirtualMIPS simulator: create a platform for generic M4K core. 2015-10-26 22:44:38 -07:00
Serge Vakulenko
d4dbb43d44 Merge pull request #64 from alexfru/master
Initial support for MIPS16e in virtualmips emulator
2015-10-26 16:01:32 -07:00
Alexey Frunze
f8bde663cf Initial support for MIPS16e in virtualmips emulator
Also:
- A few bugfixes in virtualmips
- Compile Smaller C (smlrc) using MIPS16e
  (this frees up ~20KB of space for smlrc improvements)
TBD:
- MIPS16e disassembler in virtualmips
2015-10-26 02:27:46 -07:00
Serge Vakulenko
c08045dafe Fix bug in zoneinfo compiler. 2015-10-25 15:59:54 -07:00
Serge Vakulenko
c1ff69edd2 Fix European timezones. 2015-10-20 13:30:41 -07:00
vak
7562e8e410 Install zoneinfo files. 2015-10-20 00:42:29 -07:00
Serge Vakulenko
b134c1f84c Timezone compiler updated. 2015-10-20 00:01:42 -07:00
Serge Vakulenko
0f920ee55a Add zoneinfo sources. 2015-10-19 23:40:54 -07:00
Serge Vakulenko
401d36eee7 Use names for st7781 registers. 2015-10-11 14:08:05 -07:00
Serge Vakulenko
8d820f763f Fix a timing in ST7781 driver.
All gpanel demos now work as expected.
2015-10-11 13:08:18 -07:00
Serge Vakulenko
2bb8bfabb3 Finish st7781 driver. 2015-10-10 23:31:26 -07:00
Serge Vakulenko
e82e5f2ce1 ST7781 driver compiled. 2015-10-10 21:39:27 -07:00
Sergey
e8572fdfd7 Delete file hx8357.h.
Use the same device for all TFT LCD drivers.
Only one such driver can be configured in the kernel.
2015-10-10 16:48:32 -07:00
Serge Vakulenko
789505045c Add missing gpanel examples to the manifest file. 2015-10-09 22:36:35 -07:00
Serge Vakulenko
a78f66c220 Add two gpanel examples: color palette and speed test. 2015-10-09 17:44:46 -07:00
Serge Vakulenko
8b5e30f416 Add man page for gpanel library. 2015-10-09 15:05:02 -07:00
Serge Vakulenko
1d32cd012a Use rand() in gpanel examples. 2015-10-09 13:47:07 -07:00
Serge Vakulenko
d2fb9b98a6 Fix bug in hx8357: rasterizing glyphs with width>16. 2015-10-09 13:21:29 -07:00
Serge Vakulenko
08edaaba8c Fix bug in hxtft driver: drawing rectangles.
Add a few gpanel examples.
2015-10-08 22:15:01 -07:00
Serge Vakulenko
b99fcc6c8c Use GPANEL_CLEAR ioctl to switch the display orientation.
Enable gpio driver for Picadillo board.
2015-10-08 14:01:49 -07:00
Serge Vakulenko
f7d93551cb Fix bug in udelay(): incorrect CPU_KHZ multiply factor. 2015-10-08 12:30:34 -07:00
Serge Vakulenko
793e6052bd Add sysctl parameters to query the CPU and i/o bus frequency:
machdep.cpu_khz and machdep.bus_khz.
Fix bug in machdep.console_device parameter.
2015-10-08 11:34:20 -07:00
Serge Vakulenko
61cc452f1b TFT examples updated. 2015-10-06 19:02:00 -07:00
Serge Vakulenko
21c5beb7a6 Driver hx8357 enhanced to support gpanel ioctls. 2015-10-06 18:46:01 -07:00
Serge Vakulenko
20e1ad2cb2 Install libgpanel. 2015-10-06 13:20:59 -07:00
Serge Vakulenko
9831ddd3a8 Add gpanel library. 2015-10-06 13:15:39 -07:00
Serge Vakulenko
8f220cdf97 Move tft examples to a separate directory.
Add font files.
2015-10-05 18:47:42 -07:00
Serge Vakulenko
776dee30ea Merge branch 'master' of https://github.com/RetroBSD/retrobsd 2015-10-03 14:26:29 -07:00
Serge Vakulenko
023f848428 New kernel option: signal "BUTTON1".
Hold this button pressed at kernel startup to enter a single-user mode.
See fubarino Config for example.
2015-10-03 14:24:17 -07:00
Serge Vakulenko
0f7e688c2e Add kernel configuration for SnadPIC MX795 board.
For board documentation, see:
http://www.microcontroller-board.com/snadpic-board-32/11-snadpic-pic32mx795f512l-development-board.html
2015-10-02 21:02:10 -07:00
Serge Vakulenko
3e439df5a2 Simplify spi_setup() function parameters. 2015-09-30 13:03:12 -07:00
Serge Vakulenko
e8e186905a Remove unused options from generic Config file. 2015-09-29 20:27:24 -07:00
Serge Vakulenko
d68b2f2dc1 Update spirams driver. 2015-09-29 20:23:53 -07:00
Serge Vakulenko
644b6c2112 Update mrams driver. 2015-09-29 19:43:33 -07:00
Serge Vakulenko
09112b6b7a Update sramc driver. 2015-09-29 18:45:48 -07:00
Serge Vakulenko
84a38361a5 Update sdramp driver for the new i/o framework. 2015-09-29 18:15:21 -07:00
Serge Vakulenko
c4cc4bc397 Fix bug in SD driver: incorrect size of partition. 2015-09-27 23:49:30 -07:00
Serge Vakulenko
4f7baefbf0 Build and install libm.a library.
Print a number of configured channels for adc and pwm drivers.
2015-09-27 13:59:50 -07:00
Serge Vakulenko
dc75784799 Cleanup in SD driver. 2015-09-26 23:32:12 -07:00
Serge Vakulenko
5cb608d7e1 Rename other disk drivers which needed rdisk.
Delete device names from all the drivers.
Move device inslude files from include/sys to include/machine directory.
Only include files which have something useful for user layer
(like special ioctls codes) should be placed into sys.
2015-09-26 23:00:13 -07:00
Serge Vakulenko
fdb295ec25 Create device files /dev/sdNx.
Delete unused flash driver.
2015-09-26 21:56:27 -07:00
Serge Vakulenko
3073e9af87 Modify SD driver for direct i/o (no rdisk). 2015-09-26 21:46:11 -07:00
Serge Vakulenko
1d0b58ab60 Allow comments in files.kconf. 2015-09-26 16:27:50 -07:00
Serge Vakulenko
5041402681 Add a few experimental ioctls to the hxtft driver. 2015-09-26 16:23:42 -07:00
Serge Vakulenko
1faf08d3ab Fix LEDs in makefiles for Fubarino and SDXL boards. 2015-09-25 20:33:22 -07:00
Serge Vakulenko
661929317c Enable spi3 and uart2 for Fubarino and SDXL boards. 2015-09-21 13:09:19 -07:00
Serge Vakulenko
3a4cc2d440 Update picga, mrams and spirams drivers. 2015-09-20 22:29:30 -07:00
Serge Vakulenko
80ab2d4721 Simplify the SPI driver. 2015-09-20 22:01:19 -07:00
Serge Vakulenko
a36504720c Update config files with new options. 2015-09-19 22:07:13 -07:00
Serge Vakulenko
4ca4a58468 For SD card, use parameters generated by kernel config utility. 2015-09-19 21:58:45 -07:00
Serge Vakulenko
9c749994c1 Setup only UARTs, defined in the kernel config file.
For console initialization, use options CONS_MAJOR and CONS_MINOR.
2015-09-19 21:23:07 -07:00
Serge Vakulenko
976bf303cc Kernel config utility: add new specification to assign
logical signals to pins. like 'signal "LED_KERNEL" pin RA0'.
2015-09-19 17:09:40 -07:00
Serge Vakulenko
bf92da35b8 Fix crash on access to gpio device. 2015-09-18 23:49:44 -07:00
Serge Vakulenko
f53ab56d1a Fix bug in assembler: incorrect alignment of rodata relocation section. 2015-09-17 22:11:36 -07:00
vak
51e09b4885 Fix bug in assembler: unaligned allocation of local common blocks. 2015-09-16 19:19:26 -07:00
vak
dbd2d74487 Fix bss size alignment in the assembler.
Relax the requirement in the linker as well.
2015-09-15 00:37:35 -07:00
Serge Vakulenko
3db23e5d6a Use flags for gpio driver to configure available pins. 2015-09-14 22:07:16 -07:00
Serge Vakulenko
c6360fb676 Use ioconf.c for device configuration. 2015-09-14 20:28:31 -07:00
Serge Vakulenko
51e46b333b Extend SmallerC sizes to be able to compile curses examples. 2015-09-14 11:48:16 -07:00
Serge Vakulenko
3dda877dfb Package readme file updated. 2015-09-14 11:42:51 -07:00
Serge Vakulenko
c9ed14824b Update package readme file (thanks Pito). 2015-09-14 11:21:49 -07:00
Serge Vakulenko
218466583d Fix curses bug: garbled output in nl mode.
Use nonl mode in sl, as more efficient.
2015-09-13 23:47:32 -07:00
Serge Vakulenko
7a8eff3fa3 Add a few curses examples. 2015-09-13 22:19:53 -07:00
Serge Vakulenko
261f70aef6 Enable nonl mode in libcurses by default.
Update sl sources from https://github.com/mtoyoda/sl.
2015-09-13 18:40:58 -07:00
Serge Vakulenko
2b09c13056 Use /root as a home for superuser.
Fix build warnings.
Delete extra copy of uuencode/uudecode.
2015-09-13 10:30:06 -07:00
Serge Vakulenko
3b1e8d40d7 Fix build errors. 2015-09-13 02:21:03 -07:00
Serge Vakulenko
0087168ba6 Add missing file /.profile.
Simplify stty utility, remove unused options.
2015-09-13 01:59:42 -07:00
Serge Vakulenko
967ec35fd2 Top level readme updated. 2015-09-08 23:40:38 -07:00
Serge Vakulenko
b906f7c2c5 Print SD select pin with R prefix, to match the datasheet. 2015-09-08 22:44:26 -07:00
Serge Vakulenko
0194d839ef Merge branch 'kconfig'. 2015-09-08 22:25:56 -07:00
Serge Vakulenko
b2806f3ad2 Merge branch 'master' into kconfig. 2015-09-08 22:22:29 -07:00
Serge Vakulenko
355ad339ef Kconfig: use named pins for SD select and enable signals. 2015-09-08 22:17:10 -07:00
Serge Vakulenko
c631ae5d43 Kconfig: generate xxx_ENABLED defines automatically. 2015-09-08 14:25:59 -07:00
Serge Vakulenko
717ab59efd Switch to kconfig completely.
All configsys stuff moved to tools/configsys/ directory, not used anymore.
2015-09-07 22:22:35 -07:00
Serge Vakulenko
9c8ee0a1a4 Merge branch 'master' of https://github.com/RetroBSD/retrobsd. 2015-09-07 21:32:55 -07:00
Serge Vakulenko
2c41b4d9e1 Fix crash in fsck, when reconnecting lost file. 2015-09-07 21:31:33 -07:00
Serge Vakulenko
3678ba6aee New configuration for MMB-MX7 board. 2015-09-07 17:13:10 -07:00
Serge Vakulenko
85300993b9 New configuration for Olimex Pinguino-Micro board. 2015-09-07 16:17:49 -07:00
Serge Vakulenko
137963240e New kernel configuration for SDXL board. 2015-09-07 16:12:00 -07:00
Serge Vakulenko
6facb3f56d New configurations for maximite and maximite-color boards. 2015-09-07 16:02:39 -07:00
Serge Vakulenko
bbaa00df52 New kernel configuration for starter kit board. 2015-09-07 15:46:13 -07:00
Serge Vakulenko
f17fa5a116 New kernel configuration for Explorer16 board. 2015-09-07 15:40:17 -07:00
Serge Vakulenko
ac83afdde8 New bare metal kernel configuration. 2015-09-07 15:30:41 -07:00
Serge Vakulenko
496e7ac168 New configuration for 32mxsdram board. 2015-09-05 16:18:02 -07:00
Serge Vakulenko
d7e7ae368d Delete unused file. 2015-09-04 21:26:21 -07:00
Serge Vakulenko
58359c0ff4 Rename 32mxsdram directory. 2015-09-04 21:03:54 -07:00
Serge Vakulenko
a73bd691b3 Simplify board names for max32 and wf32. 2015-09-04 20:55:02 -07:00
Serge Vakulenko
f055b45453 Kconfig: remove hz keyword. 2015-09-04 20:53:19 -07:00
Serge Vakulenko
9f05f511a6 Fixed issues with multiple kernel builds. 2015-09-04 18:55:56 -07:00
Serge Vakulenko
8ba13c2f71 Merge branch 'kconfig' of https://github.com/RetroBSD/retrobsd into kconfig. 2015-09-04 16:45:00 -07:00
Serge Vakulenko
fcad15f7e6 Generic config file updated. 2015-09-04 12:33:14 -07:00
Serge Vakulenko
5de76c3cf1 Remove MEB board. 2015-09-03 23:32:35 -07:00
Serge Vakulenko
a6396122f6 New configurations for Fubarino board.
Retroone configuration deleted.
2015-09-03 19:17:07 -07:00
Serge Vakulenko
d1eb7c79c2 New kernel configurations for UBW32 board. 2015-09-03 18:47:59 -07:00
Serge Vakulenko
095e957995 Create kernel configuration for Picadillo board. 2015-09-03 18:10:05 -07:00
Serge Vakulenko
8546991046 Fix retroone configuration.
Reorganize ubw32 and picadillo configurations.
2015-09-03 17:45:31 -07:00
Serge Vakulenko
328bdf4bbf Create kconfig configurations for Duinomite boards. 2015-09-03 17:15:50 -07:00
Serge Vakulenko
a302352054 Modify Makefile.kconf to generate dependency files automatically. 2015-09-03 13:05:37 -07:00
Serge Vakulenko
94c02410e4 Kconfig: rename machine to architecture, ident to board.
Make timezone and maxusers parameters optional.

Enable kernel options UCB_METER, EXEC_AOUT, EXEC_ELF and EXEC_SCRIPT
by default.
2015-09-03 12:51:56 -07:00
Serge Vakulenko
fc9d89eff2 Kconfig: use PARAM for all options. 2015-09-03 12:08:32 -07:00
Serge Vakulenko
23cafa1006 Merge branch 'kconfig' of https://github.com/RetroBSD/retrobsd into kconfig. 2015-09-03 11:44:14 -07:00
Serge Vakulenko
9f6a53122a Cleanup in kconfig files. 2015-09-03 11:44:03 -07:00
Serge Vakulenko
a8c229ed36 Create kconfig file for WF32 board. 2015-09-02 22:19:42 -07:00
Serge Vakulenko
592e2014fb Kconfig: remove unused options config-dependent, device-driver and profiling-routine.
Kernel makefile updated.
2015-09-02 18:19:30 -07:00
Serge Vakulenko
635d8ff2f7 GCC configuration script unified for both kconfig and configsys.
Ling scripts modified for compatibility with CodeScape toolchain.
Fixed gcc warnings in kernel and kconfig.
2015-09-01 19:46:57 -07:00
Serge Vakulenko
49de16b343 Fsutil enhanced to extract symlinks. 2015-08-31 18:35:37 -07:00
Serge Vakulenko
c19654daa9 Merge pull request #63 from alexfru/master
Smaller C: improve prologue on MIPS.
2015-08-31 00:26:49 -07:00
Serge Vakulenko
585773955b Fix include paths in the kernel sources.
Max32 kernel successfully compiled with kconfig utility.
2015-08-31 00:21:41 -07:00
Alexey Frunze
5f2b01ddda Smaller C: improve prologue on MIPS
Functions defined as 'type f()' now don't store A0-A3
on the stack just as functions defined as 'type f(void)'.
2015-08-30 23:52:26 -07:00
Serge Vakulenko
d80a636a62 Create generic kconfig script for pic32 platform. 2015-08-30 21:10:19 -07:00
Serge Vakulenko
0aaf6c25f6 Merge pull request #62 from alexfru/master
Smaller C: improvements.
2015-08-29 10:35:45 -07:00
Alexey Frunze
ae75f1cecc Smaller C: improvements
All architectures:
- "return" statement at function's end doesn't jump to immediately
  following epilog anymore
- zero and non-zero constants are recognized in conditional
  expressions of "if", "do/while" and "for" statements, no code
  generated to evaluate these constant conditions and related
  unnecessary jumps aren't generated anymore either
- in "for (clause-1; expr-2; expr-3) body", "expr-3" and "body" are
  now reordered to the more natural code flow "body expr-3", thereby
  getting rid of unnecessary jumps
MIPS code generator:
- function prologue/epilogue shortened further
- RA is not explicitly saved/restored in leaf functions
- assignment of 0 (e.g. "int a = 0;") is done from register 0
  directly, avoiding a load of a constant
2015-08-29 02:27:19 -07:00
Serge Vakulenko
c44239cb64 Bootloader moved to a separate GitHub repository. 2015-08-28 19:32:43 -07:00
Serge Vakulenko
4634b23849 Autobuild makefile updated. 2015-08-27 22:27:33 -07:00
Serge Vakulenko
2401afee53 Autobuild script updated. 2015-08-27 19:43:03 -07:00
Serge Vakulenko
09f3488389 Add pinguino-micro to the autobuild list. 2015-08-23 23:15:32 -07:00
Serge Vakulenko
b73411b3bd Autobuild script updated. 2015-08-23 22:48:02 -07:00
Serge Vakulenko
4bf3ca1292 Add autobuild script. 2015-08-23 22:45:16 -07:00
Serge Vakulenko
6419a655f4 Merge pull request #61 from alexfru/master
Smaller C: Recover ~7.5KB of data memory (room for improvements).
2015-08-22 22:19:08 -07:00
Alexey Frunze
531a56ed51 Smaller C: Recover ~7.5KB of data memory (room for improvements)
by splitting SyntaxStack[][] into two arrays and reducing
the size of the element of the first
2015-08-22 17:53:42 -07:00
Serge Vakulenko
aaaa3fd193 Autobuild makefile updated. 2015-08-22 01:42:39 -07:00
Serge Vakulenko
d6164dd82b Add tools/build directory. 2015-08-22 00:51:53 -07:00
Serge Vakulenko
00279386d7 Merge pull request #60 from alexfru/master
Update Smaller C.
2015-08-20 23:19:59 -07:00
Alexey Frunze
b331d3e0aa Update Smaller C
- Update license text (remove irrelevant FreeBSD references)

- Update root readme.txt

- Improve prologue/epilogue generation
  Don't generate unnecessary jumps back and forth to/from
  "sub sp, size_of_locals".
  Instead, with the help of fgetpos()/fsetpos()
  initially write ";sub sp,              0" and then, when
  the size is finally known, go back and overwrite it with
  " sub sp, size_of_locals".
2015-08-20 22:37:08 -07:00
Serge Vakulenko
c8939dc646 Fix bug in assembler: incorrect reordering of branch instruction.
Increase cpp buffer size.
2015-08-20 20:55:55 -07:00
Serge Vakulenko
c2a86d50bb Merge pull request #59 from ibara/master
Update to emg 1.8.
2015-08-19 13:51:00 -07:00
Brian Callahan
d29b887f18 Update to emg 1.8 2015-08-12 22:09:14 -04:00
Serge Vakulenko
f71ce9fc62 Pinguino-micro: kernel configuration updated. 2015-07-23 20:50:56 -07:00
vak
0a1960c864 Makefiles updated to properly build and install pdc and libreadline. 2015-07-18 21:44:58 -07:00
Serge Vakulenko
e8cb02f3f7 Added a tiny implementation of readline library, based on linenoise sources.
See https://github.com/antirez/linenoise for details.

Implemented a routine atexit() in libc.

Pdc modified to use readline library.
2015-07-18 18:41:46 -07:00
Serge Vakulenko
0b8e8bd520 Added pdc: the programmers desktop calculator,
imported from https://github.com/daniel-thompson/pdc repository.
2015-07-18 16:30:40 -07:00
Serge Vakulenko
84247c1ba5 Merge pull request #57 from daniel-thompson/groff
Add groff (which provides nroff) to the list of required packages.
2015-07-04 20:10:15 -07:00
vak
0c3fffb6f6 Merge pull request #56: Fix build for gcc >= 5.0.
gcc 5.0 defaults to -std=gnu11 meaning code which relies on implicit
ints will no longer compile. Passing -std=gnu89 restores the default
but causes problems because the system headers are written in gnu11.
Using -idirafter instead of -nostdinc resolves all problems and should
be compatible with old GCC versions (and clang).
2015-07-04 19:59:43 -07:00
Sergey
66cadb02a1 Fix uudecode.0 path in manifest. 2015-07-04 19:21:33 -07:00
Sergey
be7c8f804e Merge branch 'sinetek-uuencode'. 2015-07-04 19:14:42 -07:00
Sergey
af1147432a Merge branch 'uuencode' of https://github.com/sinetek/retrobsd into sinetek-uuencode 2015-07-04 19:14:06 -07:00
Serge Vakulenko
a9b2a816ba Merge pull request #54 from sinetek/fold
fold - sync with FreeBSD 2.0
2015-07-04 19:01:29 -07:00
Sergey
0329394f94 Add fold utility from FreeBSD 2.0. 2015-07-04 19:00:20 -07:00
Sergey
1bf595e11a Create $DESTDIR/share/calendar directory on install.
Also, added .gitignore for all new components.
2015-07-04 18:46:48 -07:00
Serge Vakulenko
455d7aeffe Merge pull request #53 from sinetek/calendar
calendar - sync with FreeBSD 2.0.
2015-07-04 16:46:52 -07:00
Serge Vakulenko
694c364cb4 Merge pull request #52 from sinetek/md5
md5 - sync with FreeBSD 2.0.
2015-07-04 16:44:58 -07:00
Serge Vakulenko
75470f1ac5 Merge pull request #51 from sinetek/master
Pull in a few games.
2015-07-04 16:41:23 -07:00
Daniel Thompson
804d646577 Add groff (which provides nroff) to the list of required packages.
debootstraped images will not have this by default.
2015-07-04 20:18:17 +01:00
sinetek
9623203f20 uuencode/uudecode - sync with FreeBSD 2.0 2015-07-03 16:54:18 +07:00
sinetek
8d061f04e3 fold - sync with FreeBSD 2.0 2015-07-03 16:35:12 +07:00
sinetek
49550e87d8 calendar - sync with FreeBSD 2.0 2015-07-03 16:07:55 +07:00
sinetek
6504a97fd1 md5 - sync with FreeBSD 2.0 2015-07-03 15:05:54 +07:00
sinetek
b81bb822f3 pig - sync with FreeBSD 2.0 2015-07-03 13:41:24 +07:00
sinetek
236fc62bb3 pom - sync with FreeBSD 2.0 2015-07-03 13:25:25 +07:00
sinetek
3890f0a6aa caesar - sync with FreeBSD 2.0 2015-07-03 13:12:25 +07:00
sinetek
24e057667e name clash with posix function 2015-07-03 10:09:29 +07:00
Serge Vakulenko
0cf79d71cf Added missing exception handler at startup.S. 2015-06-26 20:24:35 -07:00
Serge Vakulenko
229b664f35 Added kernel configuration for Olimex Pinguino-Micro board (with mx795 chip). 2015-06-26 14:08:59 -07:00
Serge Vakulenko
4c343f1525 Fixed bug in assembler: incorrect reordering. 2015-06-25 22:11:54 -07:00
Serge Vakulenko
219e2c3071 Fixed bug in rogue: incorrect use of NL for cursor positioning. 2015-06-24 22:45:33 -07:00
Serge Vakulenko
9d39282ae9 All paths moved to path.h.
Cleanup in curses.h: removed reg definition.
All include files reformatted for 4-space indent.
2015-06-24 20:57:08 -07:00
Serge Vakulenko
81a8a8379d Deleted unused include files dbm.h and pcc.h.
Deleted library functions stty() and gtty().
PicoC built in mips16 mode, without floating point support.
2015-06-24 19:19:46 -07:00
Serge Vakulenko
ea7c1415d7 Fixed declarations in include/time.h file.
Deleted unused file include/stab.h and reloc utility.
2015-06-24 17:45:47 -07:00
Serge Vakulenko
d1f1e614f0 Kernel sources reformated with 4 space indent, no tabs.
Unused file include/trace.h deleted.
2015-06-23 19:00:24 -07:00
Sergey
d9b3b93176 Fixed stack overflow in fsck. 2015-06-23 00:29:20 -07:00
Serge Vakulenko
880e6639ac All manual pages added to manifest file. 2015-06-22 22:44:18 -07:00
Serge Vakulenko
f462811ae9 Merge branch 'master' of https://github.com/RetroBSD/retrobsd 2015-06-22 18:03:55 -07:00
Serge Vakulenko
664cc16008 Use devcfg.c files local per target directory. 2015-06-22 18:02:18 -07:00
Sergey
84445ee1f7 Fixed bug in fsutil, occasionally resulted in unexpected fsck errors.
It was caused by garbage at end of file names.
2015-06-21 20:00:36 -07:00
Sergey
bca590d42b Fixed issue #44.
Removed unnesessary include <sys/types.h> from stdio.h, stdlib.h,
string.h, strings.h and time.h.
2015-06-21 18:59:02 -07:00
Sergey
aedd0138b3 Fixed issue #46: broken instruction reordering in assembler. 2015-06-21 17:56:15 -07:00
Sergey
b028c7bb4b Merge branch 'master' of https://github.com/RetroBSD/retrobsd 2015-06-21 17:05:29 -07:00
Sergey
57b3ba3506 Fixed .equ syntax in assembler. 2015-06-21 17:05:04 -07:00
Sergey
75778ddd4b Added configuration for version 2014.05 of Mentor Sourcery CodeBench Lite toolchain. 2015-06-13 19:57:11 -07:00
Sergey
76832ba217 Merge branch 'master' of https://github.com/RetroBSD/retrobsd 2015-06-06 23:44:30 -07:00
Sergey
48de8a19bb LED cube examples modified for fubarino. 2015-06-06 23:43:26 -07:00
vak
21ddf7fa5a Kconfig updated. 2015-06-02 00:16:15 -07:00
Serge Vakulenko
1a5e0e40d9 Merge branch 'master' into kconfig. 2015-06-01 21:46:06 -07:00
Serge Vakulenko
428764c187 SD diag utility moved to tools.
Makefile for Retro 1 kernel modified to get rid of file drivers.mk.
2015-06-01 21:43:57 -07:00
Serge Vakulenko
ce8371152f Kconfig: fixed function declarations. 2015-06-01 19:48:56 -07:00
Serge Vakulenko
47988903ae Kconfig is able to parse max32 configuration script. 2015-06-01 19:14:27 -07:00
Serge Vakulenko
31caa114fe Kconfig: all outdated stuff removed. 2015-06-01 18:33:49 -07:00
Serge Vakulenko
ff81751188 Kconfig reindented to 4 spaces. 2015-06-01 17:58:14 -07:00
Serge Vakulenko
b72cfc52f9 Kconfig compiled clean. 2015-06-01 17:35:25 -07:00
Serge Vakulenko
c4e86a1a12 Sources of kernel config utility imported from LiteBSD. 2015-06-01 17:19:20 -07:00
Sergey
5f4ecde705 Fixed bug in cdevname(). 2015-05-30 19:26:12 -07:00
Sergey
f3ee6644b2 Create /var/cron directory at build time. 2015-05-30 19:07:40 -07:00
Sergey
6b3455956a Create all devices at build time. Don't call devupdate from /etc/rc
before fs check - it can ruin the filesysem.
2015-05-30 18:54:50 -07:00
Sergey
e08e51f1b9 Use permanent allocation of major indexes for character devices. 2015-05-30 18:28:22 -07:00
Sergey
a234dfc7dc Uart driver: on close, wait for output queue to drain. 2015-05-30 16:56:03 -07:00
Serge Vakulenko
f08aabff03 Merge pull request #48 from alexfru/master
fix libicache: sign-extend the immediate in SLTIU.
2015-05-30 15:31:48 -07:00
Alexey Frunze
ea88242733 Merge remote-tracking branch 'upstream/master' 2015-05-29 22:46:46 -07:00
Serge Vakulenko
4e8398cbc9 Driver oc renamed to pwm. 2015-05-29 20:41:26 -07:00
Serge Vakulenko
33fbb51528 Fubarino and Picadillo boards: spi and oc drivers enabled. 2015-05-29 20:14:17 -07:00
Serge Vakulenko
76df048700 Dhrystone: print dmips with better precision. 2015-05-29 16:34:46 -07:00
Serge Vakulenko
d10b71a307 Dhrystone benchmark added to /share/examples. 2015-05-29 13:39:00 -07:00
Alexey Frunze
51f41b2cca fix libicache: sign-extend the immediate in SLTIU 2015-05-28 06:40:02 -07:00
Sergey
fcf0f3dad2 Fixed Makefile (led7) for sensors examples. 2015-05-24 00:10:05 -07:00
Serge Vakulenko
e949850567 Merge pull request #47 from alexfru/master
Smaller C: Improve initialization of variables
2015-05-23 01:50:17 -07:00
Alexey Frunze
3afa8e5979 Smaller C: Improve initialization of variables
- throw away data of string literals inside sizeof, e.g.
    sizeof "a"
    sizeof("a"+1)
- support minimally and inconsistently bracketed (sic)
  initialization, e.g.:
    int y[4][3] = { 1, 3, 5, 2, 4, 6, 3, 5, 7 };
    struct { int a[3], b; } w[] = { { 1 }, 2 };
- scalar initializers can be optionally enclosed in
  braces, e.g.:
    int i1 = { 1 };
2015-05-23 01:15:52 -07:00
Serge Vakulenko
976d84d56d Merge pull request #45 from alexfru/master
Smaller C improvements.
2015-05-19 20:50:40 -07:00
Serge Vakulenko
d5599ae63a Led6 example fixed. 2015-05-19 20:47:30 -07:00
Serge Vakulenko
0c22adf6bf Added example for 6-digit LCD display. 2015-05-19 17:35:41 -07:00
Sergey
7590783d92 Added demos for LED cube 8x8x8. 2015-05-17 22:39:30 -07:00
Alexey Frunze
6144631bc5 Smaller C: Support structure passing/returning by value on MIPS 2015-05-17 15:28:37 -07:00
Alexey Frunze
4ea521eabf Smaller C improvements
- type specifiers may occur in any order
  (e.g. "unsigned short int" and "int short unsigned")

- use .rodata/.rdata section for string literals
- arbitrary length string literals (hooray!)
- better concatenation of adjacent string literals
  (now works even across preprocessor directives)

Support .bss section
- -nobss option in smlrc: use .data instead of .bss as before
- take advantage of .bss in smlrc (put a large array into it)

Remove dead/useless code

Remove useless/rarely used features/options:
-use-gp (MIPS)
-flat16/-flat32 (x86)
-seg16t (x86), -seg16 is now the default
-ctor-fxn

Add/change:
- use EXIT_FAILURE=1 instead of -1 in smlrc when aborting
  due to an error
2015-05-16 05:57:39 -07:00
Serge Vakulenko
352d23a073 Merge branch 'master' of https://github.com/RetroBSD/retrobsd 2015-05-15 22:59:54 -07:00
Serge Vakulenko
c054a40805 Fixed bug in tetris. 2015-05-15 22:59:16 -07:00
Serge Vakulenko
23f426ded5 Tetris example modified for cc compatibility. 2015-05-15 22:22:44 -07:00
Serge Vakulenko
bf27d6d5c3 Added tetris and joystick examples. 2015-05-15 22:12:01 -07:00
Sergey
c40136c25d Merge branch 'master' of https://github.com/RetroBSD/retrobsd 2015-05-14 22:52:27 -07:00
Serge Vakulenko
ea03a4bc98 ADM demo rewritten without curses.
Examples reorganized.
Added examples for 37-in-1 sensor kit (not complete yet).
2015-05-14 22:11:47 -07:00
Serge Vakulenko
581ab61262 Fixed bug in gpio driver: /dev/confX device not able to configure the pin mask. 2015-05-14 12:38:04 -07:00
Sergey
f2fe94f32d Register dump fixed. 2015-05-08 22:18:10 -07:00
Serge Vakulenko
ff4a186025 Merge pull request #43 from alexfru/master
Fix issue #40.
2015-04-26 00:22:10 -07:00
Alexey Frunze
d95f161319 Merge remote-tracking branch 'upstream/master' 2015-04-25 20:05:13 -07:00
alex
a20c02c11f Fix issue #40. Properly flush stdio's streams at exit. 2015-04-25 19:49:26 -07:00
Serge Vakulenko
e5e44bfb94 Merge pull request #42 from alexfru/master
Smaller C fixes.
2015-04-25 18:12:46 -07:00
alex
acd1b5da26 Merge branch 'master' of https://github.com/alexfru/retrobsd 2015-04-25 18:05:44 -07:00
alex
a4bdbd4662 Bugfixes
- properly sign-/zero-extend returned values, e.g. the following
function must return 255 and not -1:

unsigned char f(void) { return -1; }

- properly decay arrays on the left side of ->, e.g. the following must
compile:

{
  struct {char c;} s[1];
  s[0].c = 'a'; putchar(s[0].c);
  (s+0)->c = 'b'; putchar(s[0].c);
  (*s).c = 'c'; putchar(s[0].c);
  s->c = 'd'; putchar(s[0].c);
  putchar('\n');
}

Also:
- support structure passing/returning by value (x86 only)
2015-04-25 18:03:55 -07:00
alex
301d069a1a Bugfixes
- properly sign-/zero-extend returned values, e.g. the following
function must return 255 and not -1:

unsigned char f(void) { return -1; }

- properly decay arrays on the left side of ->, e.g. the following must
compile:

{
  struct {char c;} s[1];
  s[0].c = 'a'; putchar(s[0].c);
  (s+0)->c = 'b'; putchar(s[0].c);
  (*s).c = 'c'; putchar(s[0].c);
  s->c = 'd'; putchar(s[0].c);
  putchar('\n');
}
2015-04-25 17:54:17 -07:00
Sergey
9bbe938e48 At startup, set peripheral clock PBCLK as defined by busdiv option
in kernel configuration file.
2015-02-14 20:20:19 -08:00
Sergey
d5c97a9b19 Added bit definitions for OSCCON register.
File machdep.c reindented.
2015-02-14 17:57:48 -08:00
Sergey
0005e7d7bf Fixed bug in fsck: using bcopy() instead of structure assignment.
File exception.c converted to indent4 format.
2015-02-13 21:05:03 -08:00
Sergey
42665ba3b3 SPI bus driver simplified. 2015-02-13 19:48:32 -08:00
Sergey
942bdda5ed Diskspeed: added extra sync and timeout before each test. 2015-02-13 19:41:32 -08:00
Serge Vakulenko
5ce8a8cd33 Added diskspeed utility. 2015-02-12 19:27:59 -08:00
Serge Vakulenko
b3442f28f3 Finalize skel.h. 2015-02-05 19:12:50 -08:00
Serge Vakulenko
29c75b3f71 Skeleton driver completed. 2015-02-05 19:08:53 -08:00
Serge Vakulenko
9b9f6392dc Added a skeleton for character driver. 2015-02-05 19:05:59 -08:00
Serge Vakulenko
f5bbefc222 Fixed indenting in devsw.c. 2015-02-05 18:13:17 -08:00
Serge Vakulenko
7f5ad5d3f8 Using Max32 board with Arduino SD card shield as a default configuration. 2015-02-04 14:28:03 -08:00
Serge Vakulenko
df8f8eaf71 Directory sys/pic32/max32 removed: nobody is using this configuration,
as it required a nonstandard SD card connection.
2015-02-04 14:18:42 -08:00
Serge Vakulenko
f62f70c718 Max32-eth configuration: SD card speed reduced to 10MHz.
Now it works stable with MakerStudio SD card shield.
2015-02-02 22:26:19 -08:00
Serge Vakulenko
1916f8c9da New kernel configuration: chipKIT WF32 board with microSD card on 2.4" LCD TFT display shield.
WF32 board by itself already has a microSD socket.
It's useless for RetroBSD though, as it is not connected to any
of available SPI ports (must use GPIO instead).

Fortunately, a cheap shield is widely available, which adds a microSD slot
connected to SPI2 pins.
2015-01-28 19:14:41 -08:00
Serge Vakulenko
d8269d1996 No more pause on tty output in case of clist overflow. 2015-01-20 18:09:13 -08:00
Serge Vakulenko
8e228dde62 Fixed bug in fsutil: incorrect positioning of partition superblock. 2015-01-06 19:47:31 -08:00
Serge Vakulenko
bae12383a0 Fixed build issues on Linux x86-64. 2015-01-06 19:36:49 -08:00
Serge Vakulenko
8e2c046406 Merge pull request #41 from alexfru/master
SmallerC: generate smaller & faster code; bugfixes
2014-12-29 20:06:10 -08:00
alex
dad5247184 Merge branch 'master' of https://github.com/alexfru/retrobsd 2014-12-29 16:36:58 -08:00
alex
b1f67fbca0 SmallerC: generate smaller & faster code; bugfixes
Improvements:
- use registers more efficiently
- eliminate some register copies and stack manipulations
- promote left operands to right immediate operands
- improve simple assignments to auto/static vars
- use bltz, blez, bgtz, bgez
- change mul/divu (by powers of 2) to sll/srl/and
- use seb, seh for sign extension instead of sll/sra
- overall generate a bit tighter, faster and more readable asm code

Fixes:
- >>= should be unsigned when the left operand is unsigned int.
The right operand isn't important here.
- very subtle bug in e.g. void f(){int a; &a+1;/*wrong value of &a+1*/}

Other:
- include stdarg.c and skeleton.c in /share/example/Makefile
2014-12-29 16:28:56 -08:00
Serge Vakulenko
f76ab8417c Merge pull request #39 from alexfru/master
Smaller C: Fix >>=
2014-12-13 01:19:36 -08:00
Alexey Frunze
3bb914c8b4 Fix >>=
>>= should be unsigned when the left operand is unsigned int. The right
operand isn't important here.
2014-12-13 01:06:53 -08:00
Serge Vakulenko
8b099bcf76 Merge pull request #38 from alexfru/master
Correct sd card image name.
2014-12-07 21:58:35 -08:00
Alexey Frunze
2fc41d34cf Correct sd card image name. 2014-12-07 21:51:06 -08:00
Serge Vakulenko
2301571ecb Merge pull request #37 from alexfru/master
Smaller C fixes and improvements.
2014-12-06 16:38:56 -08:00
alex
00269e9387 Smaller C fixes and improvements:
- move va_list type detection under #ifdef as it's rarely needed anyway
- allow up to 254 characters in a string literal
- generate a warning when an integer is passed instead of a pointer (and
vice versa) as a function parameter (pass -Wall for this)
- when printing an unexpected token, print identifier tokens instead of
'<tokIdent>'
- fix: allow most control characters inside '' and ""
- fix handling of -I<path> and -SI<path>
- switch() now supports Duff's device
- for() now supports declarations in its first clause as in C99/C++
2014-12-06 16:18:17 -08:00
Serge Vakulenko
687695d0db Fixed missing .profile at top level. 2014-10-23 19:08:11 -07:00
Serge Vakulenko
0aa5e1c462 README updated. 2014-10-21 11:28:22 -07:00
Serge Vakulenko
3a7cde7974 Merge pull request #36 from alexfru/master
Smaller C: Fix MIPS code generation for -= and postfix --. Also convert most of Small C sample programs to Smaller C.
2014-10-21 00:16:19 -07:00
alex
f57cc446b0 Remove no longer applicable comment. 2014-10-19 00:53:29 -07:00
alex
1a55933faf Merge branch 'master' of https://github.com/alexfru/retrobsd 2014-10-19 00:25:23 -07:00
alex
b18ce0aa87 Fix MIPS code generation for -= and postfix --.
Also convert most of Small C sample programs to Smaller C.
2014-10-19 00:22:44 -07:00
alex
5bbf8d4e73 Fix MIPS code generation for -= and postfix --.
Convert most of Small C sample programs to Smaller C.
2014-10-19 00:13:00 -07:00
Sergey
7aa774702b Fubarino configuration modified to use Arduino-compatible bootloader. 2014-10-04 14:30:21 -07:00
Sergey
64430a0f91 Added comfiguration for Majenko SDXL board.
DIP and Pinguino-micro boards removed - nobody uses these.
Deleted unused linker scripts.
2014-10-04 13:57:03 -07:00
Serge Vakulenko
d5e30d7b79 Fixed help message for fsutil. 2014-09-26 21:05:27 -07:00
Serge Vakulenko
a8d9b3d01f Makefiles updated for man sources. 2014-09-25 19:31:55 -07:00
Serge Vakulenko
ebd35d772f Fixed bug in 'make installfs'. 2014-09-25 18:09:06 -07:00
Serge Vakulenko
c4da2137e1 Added man sources from 2.11bsd tape. 2014-09-25 17:14:51 -07:00
Serge Vakulenko
c42133cdff Fixed newlines in crib game. 2014-09-25 13:44:51 -07:00
Sergey
dc66e6fdda Fsutil enhanced to create and handle partitions. 2014-09-20 18:54:13 -07:00
Serge Vakulenko
f58c7a7426 Added missing files for atc, boggle, btlgammon, cribbage. 2014-09-17 13:54:28 -07:00
Serge Vakulenko
5c4309942a Merge branch 'games'. 2014-09-17 13:21:59 -07:00
Serge Vakulenko
e557c88b1e Added manual for atc game.
Cribbage manuals installed.
2014-09-17 13:00:06 -07:00
Serge Vakulenko
850797db2e Fixed snake game.
Fixed newline bug in libcurses.

File /etc/termcap replaced by small version. Five TERM types supported:
ansi - simple generic display;
xterm - common for most modern terminal emulators;
linux - for Linux console;
cons25 - for BSD console;
vt100 - for DEC VT100 terminal emulators.

Terminal type xterm set by default.
2014-09-15 20:40:04 -07:00
Serge Vakulenko
cae7db41ca Snake fixed. 2014-09-15 14:24:17 -07:00
Serge Vakulenko
808dfaf6ef Ported snake game. 2014-09-15 12:28:43 -07:00
Sergey
d3d48970e3 Some progress with snake game. 2014-09-14 23:19:06 -07:00
Sergey
93d95abc69 Fixed warning in fsutil. 2014-09-13 15:17:30 -07:00
Serge Vakulenko
c5ac22d17f Ported robots game. 2014-09-12 13:32:16 -07:00
Serge Vakulenko
e7b77dadc3 Ported quiz game. 2014-09-12 12:03:11 -07:00
Serge Vakulenko
2ea9e02ba5 Monop game done. 2014-09-10 20:48:05 -07:00
Serge Vakulenko
d9d91365c0 Fixed warning in mille. 2014-09-10 20:09:59 -07:00
Serge Vakulenko
2da083e9bd Some progress on 'monop' game. 2014-09-08 21:36:15 -07:00
Serge Vakulenko
e4e9ff1ef4 Ported mille game. 2014-09-08 19:19:18 -07:00
Serge Vakulenko
aecac2f5d7 Ported hangman. 2014-09-08 18:07:59 -07:00
Serge Vakulenko
8886a00340 Ported fortune. 2014-09-08 12:30:17 -07:00
Serge Vakulenko
25bcc79a69 Merge branch 'master' into games.
Conflicts:
	Makefile
2014-09-08 11:31:12 -07:00
Serge Vakulenko
8d55f87ab8 Fsutil: dynamically allocate data structure for file i/o. 2014-09-04 19:29:18 -07:00
Matt Jenkins
9adca14b87 Added hx8357 TFT driver for PICadillo 2014-08-30 21:17:16 +01:00
Matt Jenkins
83a999be0a Added definitions for picadillo, and spi sram device 2014-08-27 23:13:26 +01:00
Sergey
1462eeb400 Using manifest files to create root and user filesystems. 2014-08-03 15:53:53 -07:00
Serge Vakulenko
d42bfdc7b9 Fsutil: can read manifest files.
Added a manifest for root filesystem.
2014-08-01 21:23:38 -07:00
Serge Vakulenko
1cdf42ef94 Fsutil: inode API simplified. 2014-08-01 18:17:38 -07:00
Serge Vakulenko
8f4aad27f9 Fsutil: able to create filesystem contents from manifest. 2014-08-01 17:49:59 -07:00
Serge Vakulenko
cb4ca7f73a Fsutuil: move manifest routines to a separate file. 2014-08-01 14:29:22 -07:00
Serge Vakulenko
b44cab756f Fsutil: new option --scan to create manifest from directory contents. 2014-07-31 20:55:42 -07:00
Serge Vakulenko
c2b3647d5e Fsutil: sources reformatted to 4-space indents. 2014-07-31 18:37:15 -07:00
Serge Vakulenko
4d8233582a Fsutil: added --manifest option. 2014-07-31 18:16:39 -07:00
Serge Vakulenko
eb1fb36b6b Fsutil library: use names for inode ops. 2014-07-31 17:46:24 -07:00
Sergey
2293493bfd Fixed bugs in fsutil. 2014-07-20 17:23:57 -07:00
Sergey
61ce169328 Fsutil mount complete. 2014-07-20 16:57:36 -07:00
Sergey
173efb822d Fsutil mount: symlink() and readlink() calls completed. 2014-07-19 15:06:55 -07:00
Serge Vakulenko
21babaf947 Fsutil mount: added rename and mknod calls. 2014-07-18 19:07:51 -07:00
Serge Vakulenko
3a789348da Fsutol mount: fixed rmdir call. 2014-07-18 17:41:08 -07:00
Serge Vakulenko
d6e558bea0 Fsutil mount: added truncate, mkdir, rmdir, link and unlink calls. 2014-07-18 00:13:27 -07:00
Serge Vakulenko
847e2bff77 Fsutil: allow truncate to arbitrary length. 2014-07-17 21:31:49 -07:00
Serge Vakulenko
08c79d7fec Fsutil --mount can read and write files. 2014-07-17 20:16:25 -07:00
Serge Vakulenko
0cef044377 Fsutil: added option -m to mount the filesystem via FUSE. 2014-07-16 20:31:03 -07:00
Serge Vakulenko
61c7c690b9 Merge pull request #33 from ibara/master
Emg updated to version 1.7.
2014-07-11 12:17:26 -07:00
Brian Callahan
294ccae3be emg 1.7 2014-07-10 18:11:43 -04:00
Serge Vakulenko
1c4e562363 Added kernel configuration for PICadillo-35T board. 2014-06-23 22:15:51 -07:00
Serge Vakulenko
09b50bf614 Merge pull request #31 from ibara/master
Update emg man page.
2014-06-18 10:59:57 -07:00
Serge Vakulenko
8439672624 Merge pull request #32 from jturner/fix-build
Fix build after aout reorganization.
2014-06-18 10:58:32 -07:00
James Turner
b6e105c87b Fix build after aout reorganization 2014-06-18 13:45:24 -04:00
Brian Callahan
70b8d93b21 Update emg man page. 2014-06-17 08:43:13 -04:00
Serge Vakulenko
5fa78e772b Moved aout sources to separate directory.
Fsutil and modff license changed to BSD style.
2014-06-04 11:46:33 -07:00
Serge Vakulenko
7b1bf93d3a Merge pull request #30 from ibara/master
Changes for emg 1.6 merged.
2014-05-30 21:01:53 -07:00
Brian Callahan
04208ea903 Remove unusued variable... put this down and walk away until tomorrow. 2014-05-29 18:20:55 -04:00
Brian Callahan
e003436e91 Dumbest off-by-one ever... 2014-05-29 18:16:24 -04:00
Brian Callahan
29904aacd7 I should trust my instincts. I had this right the first time. 2014-05-29 18:03:39 -04:00
Brian Callahan
dbe51ae294 This is cleaner, prevent the percent from being greater than 100. 2014-05-29 15:06:16 -04:00
Brian Callahan
87489937bf Add PgUp and PgDn scrolling to emg, release this as emg 1.6
Make sure emg.keys is installed.
2014-05-29 14:31:58 -04:00
Brian Callahan
bbba8d6f95 Remove all hardcoded make commands, changing them to ${MAKE}.
This is a first step towards being able to build RetroBSD on *BSD.
2014-05-25 16:25:15 -04:00
Sergey
b3abe580bd Added emg editor from github.com/ibara/emg. 2014-05-24 19:37:02 -07:00
Serge Vakulenko
66ffc30ccd Kernel makefiles updated. 2014-05-23 11:33:58 -07:00
Serge Vakulenko
0b31486402 Added loadmax target to kernel Makefile.
Use "make loadmax" in sys/pic32/max32 directory to upload the kernel image
to chipKIT Max32 board.
2014-05-21 12:26:24 -07:00
Serge Vakulenko
5bd8f3a470 Fixed sd timeout in the simulator.
SD driver reformatted with 4 spaces per tab.
2014-05-16 20:44:53 -07:00
Serge Vakulenko
fa46b819f0 Merge branch 'master' of https://github.com/RetroBSD/retrobsd 2014-05-16 18:01:00 -07:00
Serge Vakulenko
91468f005f Fixed build and simulator configuration for Explorer1 board. 2014-05-16 17:59:53 -07:00
Serge Vakulenko
e2cb851fbf Merge pull request #28 from alexfru/master
Update cpp to pcc 1.0.0's cpp
2014-05-14 22:39:59 -07:00
Alexey Frunze
e725ab2b44 Update cpp to pcc 1.0.0's cpp
Update the preprocessor to fix some of its bugs.
2014-05-14 02:49:38 -07:00
Sergey
8423492f33 More games ported: boggle, btlgammon, cribbage.
Simulator modified to allow CR in UART output.
2014-05-09 23:39:23 -07:00
Sergey
8e8fc70ed5 Merge branch 'games' of https://github.com/RetroBSD/retrobsd into games 2014-05-09 21:01:09 -07:00
Sergey
d8305bc374 Added words file - needed for games. 2014-05-09 21:00:43 -07:00
Serge Vakulenko
3942e87cd1 Compiled atc game. Fixed include file for curses library. 2014-04-23 20:02:02 -07:00
1636 changed files with 274208 additions and 50613 deletions

2
.gitignore vendored
View File

@@ -24,7 +24,5 @@
*.dis
*.0
*.img
sdcard.rd
.profile
Makefile.user

177
Makefile
View File

@@ -8,40 +8,13 @@
# The `make' will compile everything, including a kernel, utilities
# and a root filesystem image.
#
# Supported boards
#
MAX32 = sys/pic32/max32/MAX32
MAX32-ETH = sys/pic32/max32-eth/MAX32-ETH
UBW32 = sys/pic32/ubw32/UBW32
UBW32UART = sys/pic32/ubw32-uart/UBW32-UART
UBW32UARTSDRAM = sys/pic32/ubw32-uart-sdram/UBW32-UART-SDRAM
MAXIMITE = sys/pic32/maximite/MAXIMITE
MAXCOLOR = sys/pic32/maximite-color/MAXCOLOR
EXPLORER16 = sys/pic32/explorer16/EXPLORER16
STARTERKIT = sys/pic32/starter-kit/STARTER-KIT
DUINOMITE = sys/pic32/duinomite/DUINOMITE
DUINOMITEUART = sys/pic32/duinomite-uart/DUINOMITE-UART
DUINOMITEE = sys/pic32/duinomite-e/DUINOMITE-E
DUINOMITEEUART = sys/pic32/duinomite-e-uart/DUINOMITE-E-UART
PINGUINO = sys/pic32/pinguino-micro/PINGUINO-MICRO
DIP = sys/pic32/dip/DIP
BAREMETAL = sys/pic32/baremetal/BAREMETAL
RETROONE = sys/pic32/retroone/RETROONE
FUBARINO = sys/pic32/fubarino/FUBARINO
FUBARINOBIG = sys/pic32/fubarino/FUBARINO-UART2CONS-UART1-SRAMC
MMBMX7 = sys/pic32/mmb-mx7/MMB-MX7
# Select target board
TARGET ?= $(MAX32)
# Filesystem and swap sizes.
FS_KBYTES = 102400
U_KBYTES = 102400
SWAP_KBYTES = 2048
FS_MBYTES = 100
U_MBYTES = 100
SWAP_MBYTES = 2
# Set this to the device name for your SD card. With this
# enabled you can use "make installfs" to copy the filesys.img
# enabled you can use "make installfs" to copy the sdcard.img
# to the SD card.
#SDCARD = /dev/sdb
@@ -56,112 +29,29 @@ FSUTIL = tools/fsutil/fsutil
-include Makefile.user
TARGETDIR = $(shell dirname $(TARGET))
TARGETNAME = $(shell basename $(TARGET))
TOPSRC = $(shell pwd)
CONFIG = $(TOPSRC)/tools/configsys/config
#
# Filesystem contents.
#
BIN_FILES := $(wildcard bin/*)
SBIN_FILES := $(wildcard sbin/*)
GAMES_FILES := $(shell find games -type f ! -path '*/.*')
LIBEXEC_FILES := $(wildcard libexec/*)
LIB_FILES := lib/crt0.o lib/retroImage $(wildcard lib/*.a)
ETC_FILES = etc/rc etc/rc.local etc/ttys etc/gettytab etc/group \
etc/passwd etc/shadow etc/fstab etc/motd etc/shells \
etc/termcap etc/MAKEDEV etc/phones etc/remote
INC_FILES = $(wildcard include/*.h) \
$(wildcard include/sys/*.h) \
$(wildcard include/machine/*.h) \
$(wildcard include/smallc/*.h) \
$(wildcard include/smallc/sys/*.h) \
$(wildcard include/arpa/*.h)
SHARE_FILES = share/re.help share/example/Makefile \
share/example/ashello.S share/example/chello.c \
share/example/blkjack.bas share/example/hilow.bas \
share/example/stars.bas share/example/prime.scm \
share/example/fact.fth share/example/echo.S \
share/example/stdarg.c share/example/skeleton.c \
$(wildcard share/smallc/*)
MANFILES = share/man/ share/man/cat1/ share/man/cat2/ share/man/cat3/ \
share/man/cat4/ share/man/cat5/ share/man/cat6/ share/man/cat7/ \
share/man/cat8/ $(wildcard share/man/cat?/*)
ALLFILES = $(SBIN_FILES) $(ETC_FILES) $(BIN_FILES) $(LIB_FILES) $(LIBEXEC_FILES) \
$(INC_FILES) $(SHARE_FILES) $(GAMES_FILES) \
var/log/messages var/log/wtmp .profile
ALLDIRS = games/ sbin/ bin/ dev/ etc/ tmp/ lib/ libexec/ share/ include/ \
var/ u/ share/example/ share/misc/ share/smallc/ \
var/run/ var/log/ var/lock/ games/ games/lib/ include/sys/ \
include/machine/ include/arpa/ include/smallc/ \
include/smallc/sys/ share/misc/ share/smallc/ include/sys/ \
games/lib/
BDEVS = dev/rd0!b0:0 dev/rd0a!b0:1 dev/rd0b!b0:2 dev/rd0c!b0:3 dev/rd0d!b0:4
BDEVS += dev/rd1!b1:0 dev/rd1a!b1:1 dev/rd1b!b1:2 dev/rd1c!b1:3 dev/rd1d!b1:4
BDEVS += dev/rd2!b2:0 dev/rd2a!b2:1 dev/rd2b!b2:2 dev/rd2c!b2:3 dev/rd2d!b2:4
BDEVS += dev/rd3!b3:0 dev/rd3a!b3:1 dev/rd3b!b3:2 dev/rd3c!b3:3 dev/rd3d!b3:4
BDEVS += dev/swap!b4:64 dev/swap0!b4:0 dev/swap1!b4:1 dev/swap2!b4:2
D_CONSOLE = dev/console!c0:0
D_MEM = dev/mem!c1:0 dev/kmem!c1:1 dev/null!c1:2 dev/zero!c1:3
D_TTY = dev/tty!c2:0
D_FD = dev/stdin!c3:0 dev/stdout!c3:1 dev/stderr!c3:2
D_TEMP = dev/temp0!c4:0 dev/temp1!c4:1 dev/temp2!c4:2
U_DIRS = $(addsuffix /,$(shell find u -type d ! -path '*/.svn*'))
U_FILES = $(shell find u -type f ! -path '*/.svn/*')
#U_ALL = $(patsubst u/%,%,$(U_DIRS) $(U_FILES))
CDEVS = $(D_CONSOLE) $(D_MEM) $(D_TTY) $(D_FD) $(D_TEMP)
all: tools build kernel
all:
$(MAKE) -C tools
$(MAKE) -C lib
$(MAKE) -C src install
$(MAKE) kernel
$(MAKE) fs
fs: sdcard.rd
kernel: $(CONFIG)
$(MAKE) -C sys/pic32 all
.PHONY: tools
tools:
$(MAKE) -C tools
fs: sdcard.img
kernel: $(TARGETDIR)/Makefile
$(MAKE) -C $(TARGETDIR)
$(TARGETDIR)/Makefile: $(CONFIG) $(TARGETDIR)/$(TARGETNAME)
cd $(TARGETDIR) && ../../../tools/configsys/config $(TARGETNAME)
.PHONY: lib
lib:
$(MAKE) -C lib
build: tools lib
$(MAKE) -C src install
filesys.img: $(FSUTIL) $(ALLFILES)
.PHONY: sdcard.img
sdcard.img: $(FSUTIL) rootfs.manifest userfs.manifest
rm -f $@
$(FSUTIL) -n$(FS_KBYTES) $@
$(FSUTIL) -a $@ $(ALLDIRS)
$(FSUTIL) -a $@ $(CDEVS)
$(FSUTIL) -a $@ $(BDEVS)
$(FSUTIL) -a $@ $(ALLFILES)
$(FSUTIL) -a $@ $(MANFILES)
swap.img:
dd if=/dev/zero of=$@ bs=1k count=$(SWAP_KBYTES)
user.img: $(FSUTIL)
ifneq ($(U_KBYTES), 0)
rm -f $@
$(FSUTIL) -n$(U_KBYTES) $@
(cd u; find . -type d -exec ../$(FSUTIL) -a ../$@ '{}/' \;)
(cd u; find . -type f -exec ../$(FSUTIL) -a ../$@ '{}' \+)
endif
sdcard.rd: filesys.img swap.img user.img
ifneq ($(U_KBYTES), 0)
tools/mkrd/mkrd -out $@ -boot filesys.img -swap swap.img -fs user.img
else
tools/mkrd/mkrd -out $@ -boot filesys.img -swap swap.img
endif
$(FSUTIL) --repartition=fs=$(FS_MBYTES)M:swap=$(SWAP_MBYTES)M:fs=$(U_MBYTES)M $@
$(FSUTIL) --new --partition=1 --manifest=rootfs.manifest $@ .
# In case you need a separate /u partition,
# uncomment the following line.
# $(FSUTIL) --new --partition=3 --manifest=userfs.manifest $@ u
$(FSUTIL):
cd tools/fsutil; $(MAKE)
@@ -175,32 +65,27 @@ clean:
cleanall: clean
$(MAKE) -C lib clean
rm -f sys/pic32/*/unix.hex bin/* sbin/* games/[a-k]* games/[m-z]* libexec/* share/man/cat*/*
rm -f games/lib/adventure.dat
rm -f games/lib/cfscores
rm -f share/re.help
rm -f share/misc/more.help
rm -f sys/pic32/*/unix.hex bin/* sbin/* libexec/*
rm -f games/[a-k]* games/[m-z]* share/man/cat*/*
rm -f games/lib/adventure.dat games/lib/cfscores
rm -f share/re.help share/emg.keys share/misc/more.help
rm -f etc/termcap etc/remote etc/phones
rm -rf share/unixbench
rm -f games/lib/adventure.dat games/lib/cfscores share/re.help share/misc/more.help etc/termcap
rm -f tools/configsys/.depend
rm -f var/log/aculog
rm -rf var/lock
rm -f var/log/aculog sdcard.img
rm -rf var/lock share/unixbench
installfs: filesys.img
installfs:
ifdef SDCARD
sudo dd bs=32k if=sdcard.rd of=$(SDCARD)
@[ -f sdcard.img ] || $(MAKE) sdcard.img
sudo dd bs=32k if=sdcard.img of=$(SDCARD)
else
@echo "Error: No SDCARD defined."
@echo "Error: No SDCARD defined."
endif
# TODO: make it relative to Target
installflash:
sudo pic32prog sys/pic32/fubarino/unix.hex
sudo pic32prog sys/pic32/fubarino/unix.hex
# TODO: make it relative to Target
installboot:
sudo pic32prog sys/pic32/fubarino/bootloader.hex
.profile: etc/root/dot.profile
cp etc/root/dot.profile .profile
sudo pic32prog sys/pic32/fubarino/bootloader.hex

View File

@@ -15,49 +15,35 @@
## Supported hardware
* chipKIT Max32 board.
* Sparkfun UBW32 board.
* Fubarino SD board.
* Olimex Duinomite, Duinomite-Mini, Duinomite-Mega and Duinomite-eMega boards.
* Olimex Pinguino-Micro board with PIC32MX795F512H microcontroller.
* Maximite and Colour Maximite computers.
* Majenko SDXL board.
* 4D Systems Picadillo-35T board.
* MikroElektronika MultiMedia Board for PIC32MX7.
* chipKIT Max32 board with SD card shield.
* chipKIT WF32 board with 2.4" LCD TFT display shield.
* Sparkfun UBW32 board with SD card slot.
* Microchip Explorer 16 board, with PIC32 CAN-USB plug-in module and SD & MMC pictail.
* Microchip PIC32 USB or Ethernet Starter Kit, with I/O Expansion board and SD & MMC pictail.
* Olimex Duinomite, Duinomite-Mini and Duinomite-Mega boards.
* Olimex Pinguino-Micro board with PIC32MX795F512H microcontroller.
* eflightworks DIP board.
## Build
By default, the system is configured for the Max32 board.
To select another target board, edit a top-level user-specific Makefile called "Makefile.user"
and set a TARGET value:
To compile everything from sources, you'll need some packages installed, namely:
Berkeley YACC, GNU bison, flex, groff, ELF library and FUSE library.
Under Ubuntu, for example, you can do it by command:
```Makefile
TARGET = $(UBW32) # for the UBW32 board with USB console
TARGET = $(UBW32UART) # for the UBW32 board with UART console
TARGET = $(UBW32UARTSDRAM) # for the UBW32 boars with UART console and 8MB SRAM ramdisk
TARGET = $(MAXIMITE) # for the Maximite board
TARGET = $(MAXCOLOR) # for the Colour Maximite board
TARGET = $(EXPLORER16) # for the Explorer 16 board
TARGET = $(STARTERKIT) # for the PIC32 USB or Ethernet Starter Kit
TARGET = $(MAX32) # default
TARGET = $(MAX32-ETH) # for the chipKIT MAX32 board with Arduino Ethernet shield
TARGET = $(DUINOMITE) # for the Duinomite board with USB console
TARGET = $(DUINOMITEUART) # for the Duinomite board with UART console
TARGET = $(DUINOMITEE) # for the Duinomite E board with USB console
TARGET = $(DUINOMITEEUART) # for the Duinomite E board with UART console
TARGET = $(PINGUINO) # for the Pinguino-Micro board
TARGET = $(DIP) # for the DIP board
TARGET = $(BAREMETAL) # Bare PIC32 chip on a breakout board
TARGET = $(FUBARINO) # Fubarino SD board
TARGET = $(FUBARINOBIG) # Fubarino SD board with 8MB SRAM RAMDISK
TARGET = $(MMBMX7) # MMB MX7 board
```shell
$ sudo apt-get install bison byacc flex groff-base libelf-dev libfuse-dev
```
You can also change a desired filesystem size and swap area size,
as required. Default is:
You can change a desired filesystem size and swap area size, as required.
Default is:
```Makefile
FS_KBYTES = 16384
SWAP_KBYTES = 2048
FS_MBYTES = 100
SWAP_MBYTES = 2
```
To compile the kernel and build a filesystem image, run:
@@ -65,7 +51,7 @@ To compile the kernel and build a filesystem image, run:
$ make
```
A resulting root filesystem image is in file `sdcard.rd`.
A resulting root filesystem image is in file `sdcard.img`.
A kernel is in file `unix.hex` in your target board subdirectory.
@@ -76,7 +62,7 @@ Win32DiskImager utility (https://launchpad.net/win32-image-writer/+download).
On Linux, run:
```shell
$ sudo dd if=sdcard.rd of=/dev/XYZ
$ sudo dd if=sdcard.img of=/dev/XYZ
```
Here `XYZ` is a device name of SD card, as recognized by Linux (sdb in my case).
@@ -88,11 +74,11 @@ Kernel image should be written to PIC32 flash memory. The procedure depends
on a board used.
#### Max32 board:
Use a pic32prog utility (http://code.google.com/p/pic32prog/)
and a USB cable to install a kernel:
```shell
$ cd sys/pic32/ubw32
$ AVRTOOLS=/Applications/Mpide.app/Contents/Resources/Java/hardware/tools/avr
$AVRTOOLS/bin/avrdude -C$AVRTOOLS/etc/avrdude.conf -c stk500v2 -p pic32 \
-P /dev/tty.usbserial-* -b 115200 -v -U flash:w:unix.hex:i
$ pic32prog -d /dev/ttyUSB0 sys/pic32/max32/unix.hex
```
Here you need to change AVRTOOLS path and tty name according to your system.
@@ -154,13 +140,3 @@ $ ./pic32
```
Configuration of simulated board is stored in file `pic32_max32.conf`.
## Build packages
For building under Ubuntu you need the following packages installed:
```shell
$ sudo apt-get install byacc libelf-dev
```

View File

@@ -1,7 +1,7 @@
DESTDIR = /usr/local/retrobsd
MACHINE = mips
CC = gcc
CC = gcc -m32
AS = $(CC) -x assembler-with-cpp
LD = ld

2
etc/.gitignore vendored
View File

@@ -1,3 +1,5 @@
localtime
phones
remote
termcap
termcap.full

View File

@@ -4,46 +4,14 @@
# All rights reserved. The Berkeley software License Agreement
# specifies the terms and conditions for redistribution.
#
# @(#)MAKEDEV 4.27.6 (2.11BSD) 1999/2/19
#
# Device "make" file. Valid arguments:
# std standard devices
# local configuration specific devices
# fd file descriptor driver
# Tapes:
# ht* unibus tu77 & te16
# tm* unibus tm11 & te10 emulations (e.g. Emulex tc-11)
# ts* unibus ts11
# tu* tmscp (tk50/tu81)
# std standard devices
# local configuration specific devices
# fd file descriptor driver
# Disks:
# br* unibus Eaton br1538 or br1711
# hk* unibus rk06 and rk07
# ra* unibus uda50 w/ ra??
# rk* unibus rk05
# rl* unibus rl01/rl02
# rx* unibus rx02
# si* unibus cdc 9766 w/ si 9500
# xp* unibus rm02/03/05, rp04/05/06, diva, eagle, cdc9766, fuji 160.
# Terminal multiplexors:
# dl* dl-11 units other than the console
# dz* unibus dz11 and dz32
# dh* unibus dh11 and emulations (e.g. Able dmax, Emulex cs-11)
# dmf* unibus dmf32
# dhu* unibus dhu11
# dmz* unibus dmz32
# dhv* qbus dhv11
# sd* flash cards SecureDigital
# Pseudo terminals:
# pty* set of 16 master and slave pseudo terminals
# Printers:
# lp* unibus lp11 parallel interface
# va* unibus varian parallel interface
# vp* unibus versatec parallel interface
# Call units:
# Special purpose devices:
# dr* unibus dr11
# ram* memory disk
# dn* dn11 dialer
# ingreslock Ingres lock driver.
# pty* set of 16 master and slave pseudo terminals
PATH=/etc:/sbin:/usr/sbin:/bin:/usr/bin
umask 77

View File

@@ -11,7 +11,6 @@ DESTDIR = /foobar
OWN = root
GRP = wheel
SUBDIR = root
FILES = crontab fstab gettytab group motd passwd \
rc rc.local shells syslog.conf ttys
@@ -19,8 +18,6 @@ all install depend lint tags:
clean:
rm -f *~
-for i in ${SUBDIR}; do \
(cd $$i; make DESTDIR=${DESTDIR} $@); done
distribution:
-@mkdir -p ${DESTDIR}/dev
@@ -75,5 +72,3 @@ distribution:
${DESTDIR}/usr/adm/savacct
install -c -o uucp -g daemon -m 600 /dev/null \
${DESTDIR}/usr/adm/aculog
-for i in ${SUBDIR}; do \
(cd $$i; make DESTDIR=${DESTDIR} distribution); done

View File

@@ -1,2 +1,2 @@
/dev/rd0a / ufs rw,async 1 1
#/dev/rd0c /u ufs rw,async 1 2
/dev/sd0a / ufs rw,async 1 1
#/dev/sd0c /u ufs rw,async 1 2

View File

@@ -1,8 +1,7 @@
root:5:0:1:The Man:/:/bin/sh
daemon:*:1:1:The devil himself:/:/bin/sh
root:5:0:1:The Man:/root:/bin/sh
daemon:*:1:1:The devil himself:/root:/bin/sh
sys:*:4:2:Operating System:/tmp:nologin
operator:*:2:5:System &:/usr/guest/operator:/bin/csh
bin:*:3:20:Binaries Commands and Source:/:/bin/csh
operator:*:2:5:System &:/u/operator:/bin/sh
bin:*:3:20:Binaries Commands and Source:/root:/bin/sh
nobody:*:32767:31:Nobody:/nonexistent:/bin/sh
uucp:*:66:1:UNIX-to-UNIX Copy:/usr/spool/uucppublic:/usr/sbin/uucico
ingres:*:39:74:INGRES Owner:/usr/ingres:/bin/csh
uucp:*:66:1:UNIX-to-UNIX Copy:/spool/uucppublic:/sbin/uucico

2
etc/rc
View File

@@ -3,8 +3,6 @@ HOME=/; export HOME
PATH=/bin:/sbin; export PATH
exec >/dev/console 2>&1
/sbin/devupdate
if test "$1" != "autoboot"; then
#
# Switch from single-user to multi-user mode.

View File

@@ -1,18 +0,0 @@
#
# DESTDIR is defined here to be something which does *NOT* exist - it must be
# specified on the command line when doing a "make DESTDIR=/mnt distribution".
# This is aimed at avoiding overwriting the system disk's /etc files.
DESTDIR = /foobar
OWN = root
GRP = wheel
all install depend lint tags:
distribution:
install -c -o ${OWN} -g ${GRP} -m 644 dot.cshrc ${DESTDIR}/.cshrc
install -c -o ${OWN} -g ${GRP} -m 644 dot.login ${DESTDIR}/.login
install -c -o ${OWN} -g ${GRP} -m 644 dot.profile ${DESTDIR}/.profile
clean:
rm -f *~

View File

@@ -1,14 +0,0 @@
set history=30
set path=(/bin /sbin /etc /usr/sbin /usr/ucb /usr/bin /usr/new /usr/local)
if ($?prompt) then
set prompt="\!% "
endif
set filec
set mail=( 0 /usr/spool/mail/$USER )
set cdpath=( ~ /usr/spool/mqueue)
set prompt="\!% root--> "
alias mail /usr/ucb/Mail
alias pwd 'echo $cwd'
alias h history
alias q5 'tail -5 /usr/spool/mqueue/syslog'

View File

@@ -1,14 +0,0 @@
unset noglob
set path=(/bin /etc /sbin /usr/sbin /usr/ucb /usr/bin /usr/local /usr/new)
umask 26
stty dec erase ^H kill ^U eof ^D
set prompt="[\!] root--> "
if ( "$TERM" == dialup || "$TERM" == network) then
setenv TERM vt100
echo -n "Terminal ($TERM)? "
set argv = "$<"
if ( "$argv" != '' ) setenv TERM "$argv"
endif
biff y

View File

@@ -1,8 +0,0 @@
echo 'erase, kill ^U, intr ^C'
stty dec
stty erase
PATH=/bin:/sbin:/usr/sbin:/etc:/usr/ucb:/usr/bin:/usr/new
export PATH
HOME=/
export HOME
export TERM

View File

@@ -1,8 +1,7 @@
root:ro46DZg1ViGBs:0:1:The Man:/:/bin/sh
daemon:*:1:1:The devil himself:/:/bin/sh
root:ro46DZg1ViGBs:0:1:The Man:/root:/bin/sh
daemon:*:1:1:The devil himself:/root:/bin/sh
sys:*:4:2:Operating System:/tmp:nologin
operator:*:2:5:System &:/usr/guest/operator:/bin/csh
bin:*:3:20:Binaries Commands and Source:/:/bin/csh
operator:*:2:5:System &:/u/operator:/bin/sh
bin:*:3:20:Binaries Commands and Source:/root:/bin/sh
nobody:*:32767:31:Nobody:/nonexistent:/bin/sh
uucp:*:66:1:UNIX-to-UNIX Copy:/usr/spool/uucppublic:/usr/sbin/uucico
ingres:*:39:74:INGRES Owner:/usr/ingres:/bin/csh
uucp:*:66:1:UNIX-to-UNIX Copy:/spool/uucppublic:/sbin/uucico

View File

@@ -1,16 +1,16 @@
#
# name getty type status comments
#
console "/libexec/getty std.default" vt100 on secure #special
console "/libexec/getty std.default" xterm on secure #special
# Enable some of these for additional logins. Do NOT enable the same one as the
# console port, or strange things will happen. You can turn off the console port
# if you would rather use the getty on the real tty - it's up to you.
tty0 "/libexec/getty std.default" vt100 off secure
tty1 "/libexec/getty std.default" vt100 off secure
tty2 "/libexec/getty std.default" vt100 off secure
tty3 "/libexec/getty std.default" vt100 off secure
tty4 "/libexec/getty std.default" vt100 off secure
tty5 "/libexec/getty std.default" vt100 off secure
ttyUSB0 "/libexec/getty std.default" vt100 off secure
tty0 "/libexec/getty std.default" xterm off secure
tty1 "/libexec/getty std.default" xterm off secure
tty2 "/libexec/getty std.default" xterm off secure
tty3 "/libexec/getty std.default" xterm off secure
tty4 "/libexec/getty std.default" xterm off secure
tty5 "/libexec/getty std.default" xterm off secure
ttyUSB0 "/libexec/getty std.default" xterm off secure

1
include/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
readline

View File

@@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
@@ -30,12 +30,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef _AOUT_H_
#define _AOUT_H_
#ifndef _AOUT_H_
#define _AOUT_H_
#include <sys/exec_aout.h>
#define _AOUT_INCLUDE_
#define _AOUT_INCLUDE_
#include <nlist.h>
/* Relocations */
@@ -65,4 +65,4 @@ struct reloc {
* for RIGH16 and RIGH16S */
};
#endif /* !_AOUT_H_ */
#endif /* !_AOUT_H_ */

View File

@@ -15,8 +15,8 @@
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
@@ -35,24 +35,24 @@
*/
#ifndef _AR_H_
#define _AR_H_
#define _AR_H_
#define ARMAG "!<arch>\n" /* ar "magic number" */
#define SARMAG 8 /* strlen(ARMAG); */
#define ARMAG "!<arch>\n" /* ar "magic number" */
#define SARMAG 8 /* strlen(ARMAG); */
#define AR_EFMT1 "#1/" /* extended format #1 */
#define AR_EFMT1 "#1/" /* extended format #1 */
struct ar_hdr {
char ar_name[16]; /* name */
char ar_date[12]; /* modification time */
char ar_uid[6]; /* user id */
char ar_gid[6]; /* group id */
char ar_mode[8]; /* octal file permissions */
char ar_size[10]; /* size in bytes */
#define ARFMAG "`\n"
char ar_fmag[2]; /* consistency check */
char ar_name[16]; /* name */
char ar_date[12]; /* modification time */
char ar_uid[6]; /* user id */
char ar_gid[6]; /* group id */
char ar_mode[8]; /* octal file permissions */
char ar_size[10]; /* size in bytes */
#define ARFMAG "`\n"
char ar_fmag[2]; /* consistency check */
};
#define ARHDRSZ 60
#define ARHDRSZ 60
#endif /* !_AR_H_ */

View File

@@ -19,11 +19,11 @@
* External definitions for
* functions in inet(3N)
*/
struct in_addr;
struct in_addr;
unsigned long inet_addr (char *);
char *inet_ntoa (struct in_addr);
struct in_addr inet_makeaddr (long, long);
char *inet_ntoa (struct in_addr);
struct in_addr inet_makeaddr (long, long);
unsigned long inet_network (char *);
unsigned long inet_netof (struct in_addr);
unsigned long inet_lnaof (struct in_addr);

View File

@@ -1,8 +1,6 @@
/* assert.h 4.2 85/01/21 */
# ifndef NDEBUG
# define _assert(ex) {if (!(ex)){fprintf(stderr,"Assertion failed: file \"%s\", line %d\n", __FILE__, __LINE__);exit(1);}}
# define assert(ex) _assert(ex)
# define _assert(ex) {if (!(ex)){fprintf(stderr,"Assertion failed: file \"%s\", line %d\n", __FILE__, __LINE__);exit(1);}}
# define assert(ex) _assert(ex)
# else
# define _assert(ex)
# define assert(ex)

View File

@@ -1,28 +1,26 @@
/* ctype.h 4.2 85/09/04 */
#define _U 01
#define _L 02
#define _N 04
#define _S 010
#define _P 020
#define _C 040
#define _X 0100
#define _B 0200
#define _U 01
#define _L 02
#define _N 04
#define _S 010
#define _P 020
#define _C 040
#define _X 0100
#define _B 0200
extern char _ctype_[];
extern char _ctype_[];
#define isalpha(c) ((_ctype_+1)[(int)(c)]&(_U|_L))
#define isupper(c) ((_ctype_+1)[(int)(c)]&_U)
#define islower(c) ((_ctype_+1)[(int)(c)]&_L)
#define isdigit(c) ((_ctype_+1)[(int)(c)]&_N)
#define isxdigit(c) ((_ctype_+1)[(int)(c)]&(_N|_X))
#define isspace(c) ((_ctype_+1)[(int)(c)]&_S)
#define ispunct(c) ((_ctype_+1)[(int)(c)]&_P)
#define isalnum(c) ((_ctype_+1)[(int)(c)]&(_U|_L|_N))
#define isprint(c) ((_ctype_+1)[(int)(c)]&(_P|_U|_L|_N|_B))
#define isgraph(c) ((_ctype_+1)[(int)(c)]&(_P|_U|_L|_N))
#define iscntrl(c) ((_ctype_+1)[(int)(c)]&_C)
#define isascii(c) ((unsigned)(c)<=0177)
#define toupper(c) ((c)-'a'+'A')
#define tolower(c) ((c)-'A'+'a')
#define toascii(c) ((c)&0177)
#define isalpha(c) ((_ctype_+1)[(int)(c)]&(_U|_L))
#define isupper(c) ((_ctype_+1)[(int)(c)]&_U)
#define islower(c) ((_ctype_+1)[(int)(c)]&_L)
#define isdigit(c) ((_ctype_+1)[(int)(c)]&_N)
#define isxdigit(c) ((_ctype_+1)[(int)(c)]&(_N|_X))
#define isspace(c) ((_ctype_+1)[(int)(c)]&_S)
#define ispunct(c) ((_ctype_+1)[(int)(c)]&_P)
#define isalnum(c) ((_ctype_+1)[(int)(c)]&(_U|_L|_N))
#define isprint(c) ((_ctype_+1)[(int)(c)]&(_P|_U|_L|_N|_B))
#define isgraph(c) ((_ctype_+1)[(int)(c)]&(_P|_U|_L|_N))
#define iscntrl(c) ((_ctype_+1)[(int)(c)]&_C)
#define isascii(c) ((unsigned)(c)<=0177)
#define toupper(c) ((c)-'a'+'A')
#define tolower(c) ((c)-'A'+'a')
#define toascii(c) ((c)&0177)

View File

@@ -9,155 +9,152 @@
#include <sgtty.h>
#include <term.h>
#define bool int
#define reg register
#define bool int
#define TRUE (1)
#define FALSE (0)
#define ERR (0)
#define OK (1)
#define TRUE (1)
#define FALSE (0)
#define ERR (0)
#define OK (1)
#define _ENDLINE 001
#define _FULLWIN 002
#define _SCROLLWIN 004
#define _FLUSH 010
#define _FULLLINE 020
#define _IDLINE 040
#define _STANDOUT 0200
#define _NOCHANGE -1
#define _ENDLINE 001
#define _FULLWIN 002
#define _SCROLLWIN 004
#define _FLUSH 010
#define _FULLLINE 020
#define _IDLINE 040
#define _STANDOUT 0200
#define _NOCHANGE -1
#define _puts(s) tputs(s, 0, _putchar)
#define _puts(s) tputs(s, 0, _putchar)
typedef struct sgttyb SGTTY;
typedef struct sgttyb SGTTY;
/*
* Capabilities from termcap
*/
extern bool AM, BS, CA, DA, DB, EO, HC, HZ, IN, MI, MS, NC, NS, OS, UL,
XB, XN, XT, XS, XX;
extern char *AL, *BC, *BT, *CD, *CE, *CL, *CM, *CR, *CS, *DC, *DL,
*DM, *DO, *ED, *EI, *K0, *K1, *K2, *K3, *K4, *K5, *K6,
*K7, *K8, *K9, *HO, *IC, *IM, *IP, *KD, *KE, *KH, *KL,
*KR, *KS, *KU, *LL, *MA, *ND, *NL, *RC, *SC, *SE, *SF,
*SO, *SR, *TA, *TE, *TI, *UC, *UE, *UP, *US, *VB, *VS,
*VE, *AL_PARM, *DL_PARM, *UP_PARM, *DOWN_PARM,
*LEFT_PARM, *RIGHT_PARM;
extern char PC;
extern bool AM, BS, CA, DA, DB, EO, HC, HZ, IN, MI, MS, NC, NS, OS, UL,
XB, XN, XT, XS, XX;
extern char *AL, *BC, *BT, *CD, *CE, *CL, *CM, *CR, *CS, *DC, *DL,
*DM, *DO, *ED, *EI, *K0, *K1, *K2, *K3, *K4, *K5, *K6,
*K7, *K8, *K9, *HO, *IC, *IM, *IP, *KD, *KE, *KH, *KL,
*KR, *KS, *KU, *LL, *MA, *ND, *NL, *RC, *SC, *SE, *SF,
*SO, *SR, *TA, *TE, *TI, *UC, *UE, *UP, *US, *VB, *VS,
*VE, *AL_PARM, *DL_PARM, *UP_PARM, *DOWN_PARM,
*LEFT_PARM, *RIGHT_PARM;
extern char PC;
/*
* From the tty modes...
*/
extern bool GT, NONL, UPPERCASE, normtty, _pfast;
extern bool GT, NONL, UPPERCASE, normtty, _pfast;
struct _win_st {
short _cury, _curx;
short _maxy, _maxx;
short _begy, _begx;
short _flags;
short _ch_off;
bool _clear;
bool _leave;
bool _scroll;
char **_y;
short *_firstch;
short *_lastch;
struct _win_st *_nextp, *_orig;
short _cury, _curx;
short _maxy, _maxx;
short _begy, _begx;
short _flags;
short _ch_off;
bool _clear;
bool _leave;
bool _scroll;
char **_y;
short *_firstch;
short *_lastch;
struct _win_st *_nextp, *_orig;
};
#define WINDOW struct _win_st
#define WINDOW struct _win_st
extern bool My_term, _echoit, _rawmode, _endwin;
extern bool My_term, _echoit, _rawmode, _endwin;
extern char *Def_term, ttytype[];
extern char *Def_term, ttytype[];
extern int LINES, COLS, _tty_ch, _res_flg;
extern int LINES, COLS, _tty_ch, _res_flg;
extern SGTTY _tty;
extern SGTTY _tty;
extern WINDOW *stdscr, *curscr;
extern WINDOW *stdscr, *curscr;
/*
* Define VOID to stop lint from generating "null effect"
* Define VOID to stop lint from generating "null effect"
* comments.
*/
#ifdef lint
int __void__;
#define VOID(x) (__void__ = (int) (x))
int __void__;
#define VOID(x) (__void__ = (int) (x))
#else
#define VOID(x) (x)
#define VOID(x) (x)
#endif
/*
* psuedo functions for standard screen
*/
#define addch(ch) VOID(waddch(stdscr, ch))
#define getch() VOID(wgetch(stdscr))
#define addstr(str) VOID(waddstr(stdscr, str))
#define getstr(str) VOID(wgetstr(stdscr, str))
#define move(y, x) VOID(wmove(stdscr, y, x))
#define clear() VOID(wclear(stdscr))
#define erase() VOID(werase(stdscr))
#define clrtobot() VOID(wclrtobot(stdscr))
#define clrtoeol() VOID(wclrtoeol(stdscr))
#define insertln() VOID(winsertln(stdscr))
#define deleteln() VOID(wdeleteln(stdscr))
#define refresh() VOID(wrefresh(stdscr))
#define inch() VOID(winch(stdscr))
#define insch(c) VOID(winsch(stdscr,c))
#define delch() VOID(wdelch(stdscr))
#define standout() VOID(wstandout(stdscr))
#define standend() VOID(wstandend(stdscr))
#define addch(ch) VOID(waddch(stdscr, ch))
#define getch() VOID(wgetch(stdscr))
#define addstr(str) VOID(waddstr(stdscr, str))
#define getstr(str) VOID(wgetstr(stdscr, str))
#define move(y, x) VOID(wmove(stdscr, y, x))
#define clear() VOID(wclear(stdscr))
#define erase() VOID(werase(stdscr))
#define clrtobot() VOID(wclrtobot(stdscr))
#define clrtoeol() VOID(wclrtoeol(stdscr))
#define insertln() VOID(winsertln(stdscr))
#define deleteln() VOID(wdeleteln(stdscr))
#define refresh() VOID(wrefresh(stdscr))
#define inch() VOID(winch(stdscr))
#define insch(c) VOID(winsch(stdscr,c))
#define delch() VOID(wdelch(stdscr))
#define standout() VOID(wstandout(stdscr))
#define standend() VOID(wstandend(stdscr))
/*
* mv functions
*/
#define mvwaddch(win,y,x,ch) VOID(wmove(win,y,x)==ERR?ERR:waddch(win,ch))
#define mvwgetch(win,y,x) VOID(wmove(win,y,x)==ERR?ERR:wgetch(win))
#define mvwaddstr(win,y,x,str) VOID(wmove(win,y,x)==ERR?ERR:waddstr(win,str))
#define mvwaddch(win,y,x,ch) VOID(wmove(win,y,x)==ERR?ERR:waddch(win,ch))
#define mvwgetch(win,y,x) VOID(wmove(win,y,x)==ERR?ERR:wgetch(win))
#define mvwaddstr(win,y,x,str) VOID(wmove(win,y,x)==ERR?ERR:waddstr(win,str))
#define mvwgetstr(win,y,x,str) VOID(wmove(win,y,x)==ERR?ERR:wgetstr(win,str))
#define mvwinch(win,y,x) VOID(wmove(win,y,x) == ERR ? ERR : winch(win))
#define mvwdelch(win,y,x) VOID(wmove(win,y,x) == ERR ? ERR : wdelch(win))
#define mvwinsch(win,y,x,c) VOID(wmove(win,y,x) == ERR ? ERR:winsch(win,c))
#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch)
#define mvgetch(y,x) mvwgetch(stdscr,y,x)
#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str)
#define mvwinch(win,y,x) VOID(wmove(win,y,x) == ERR ? ERR : winch(win))
#define mvwdelch(win,y,x) VOID(wmove(win,y,x) == ERR ? ERR : wdelch(win))
#define mvwinsch(win,y,x,c) VOID(wmove(win,y,x) == ERR ? ERR:winsch(win,c))
#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch)
#define mvgetch(y,x) mvwgetch(stdscr,y,x)
#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str)
#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str)
#define mvinch(y,x) mvwinch(stdscr,y,x)
#define mvdelch(y,x) mvwdelch(stdscr,y,x)
#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c)
#define mvinch(y,x) mvwinch(stdscr,y,x)
#define mvdelch(y,x) mvwdelch(stdscr,y,x)
#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c)
/*
* psuedo functions
*/
#define clearok(win,bf) (win->_clear = bf)
#define leaveok(win,bf) (win->_leave = bf)
#define scrollok(win,bf) (win->_scroll = bf)
#define flushok(win,bf) (bf ? (win->_flags |= _FLUSH):(win->_flags &= ~_FLUSH))
#define getyx(win,y,x) y = win->_cury, x = win->_curx
#define winch(win) (win->_y[win->_cury][win->_curx] & 0177)
#define clearok(win,bf) (win->_clear = bf)
#define leaveok(win,bf) (win->_leave = bf)
#define scrollok(win,bf) (win->_scroll = bf)
#define flushok(win,bf) (bf ? (win->_flags |= _FLUSH):(win->_flags &= ~_FLUSH))
#define getyx(win,y,x) y = win->_cury, x = win->_curx
#define winch(win) (win->_y[win->_cury][win->_curx] & 0177)
#define raw() (_tty.sg_flags|=RAW, _pfast=_rawmode=TRUE, ioctl(_tty_ch,TIOCSETP,&_tty))
#define noraw() (_tty.sg_flags&=~RAW,_rawmode=FALSE,_pfast=!(_tty.sg_flags&CRMOD),ioctl(_tty_ch,TIOCSETP,&_tty))
#define cbreak() (_tty.sg_flags |= CBREAK, _rawmode = TRUE, ioctl(_tty_ch,TIOCSETP,&_tty))
#define nocbreak() (_tty.sg_flags &= ~CBREAK,_rawmode=FALSE,ioctl(_tty_ch,TIOCSETP,&_tty))
#define crmode() cbreak() /* backwards compatability */
#define nocrmode() nocbreak() /* backwards compatability */
#define echo() (_tty.sg_flags |= ECHO, _echoit = TRUE, ioctl(_tty_ch, TIOCSETP, &_tty))
#define noecho() (_tty.sg_flags &= ~ECHO, _echoit = FALSE, ioctl(_tty_ch, TIOCSETP, &_tty))
#define nl() (_tty.sg_flags |= CRMOD, _pfast = _rawmode,ioctl(_tty_ch, TIOCSETP, &_tty))
#define nonl() (_tty.sg_flags &= ~CRMOD,_pfast = TRUE, ioctl(_tty_ch, TIOCSETP,&_tty))
#define savetty() ((void) ioctl(_tty_ch, TIOCGETP, &_tty), _res_flg = _tty.sg_flags)
#define resetty() (_tty.sg_flags = _res_flg, (void) ioctl(_tty_ch, TIOCSETP, &_tty))
#define raw() (_tty.sg_flags|=RAW, _pfast=_rawmode=TRUE, ioctl(_tty_ch,TIOCSETP,&_tty))
#define noraw() (_tty.sg_flags&=~RAW,_rawmode=FALSE,_pfast=!(_tty.sg_flags&CRMOD),ioctl(_tty_ch,TIOCSETP,&_tty))
#define cbreak() (_tty.sg_flags |= CBREAK, _rawmode = TRUE, ioctl(_tty_ch,TIOCSETP,&_tty))
#define nocbreak() (_tty.sg_flags &= ~CBREAK,_rawmode=FALSE,ioctl(_tty_ch,TIOCSETP,&_tty))
#define crmode() cbreak() /* backwards compatability */
#define nocrmode() nocbreak() /* backwards compatability */
#define echo() (_tty.sg_flags |= ECHO, _echoit = TRUE, ioctl(_tty_ch, TIOCSETP, &_tty))
#define noecho() (_tty.sg_flags &= ~ECHO, _echoit = FALSE, ioctl(_tty_ch, TIOCSETP, &_tty))
#define nl() (_tty.sg_flags |= CRMOD, _pfast = _rawmode,ioctl(_tty_ch, TIOCSETP, &_tty))
#define nonl() (_tty.sg_flags &= ~CRMOD,_pfast = TRUE, ioctl(_tty_ch, TIOCSETP,&_tty))
#define savetty() ((void) ioctl(_tty_ch, TIOCGETP, &_tty), _res_flg = _tty.sg_flags)
#define resetty() (_tty.sg_flags = _res_flg, (void) ioctl(_tty_ch, TIOCSETP, &_tty))
#define erasechar() (_tty.sg_erase)
#define killchar() (_tty.sg_kill)
#define baudrate() (_tty.sg_ospeed)
#define erasechar() (_tty.sg_erase)
#define killchar() (_tty.sg_kill)
#define baudrate() (_tty.sg_ospeed)
WINDOW *initscr(), *newwin(), *subwin();
char *longname(), *getcap();
WINDOW *initscr(), *newwin(), *subwin();
char *longname(), *getcap();
int wmove (WINDOW *, int, int);
int wrefresh (WINDOW *);
@@ -181,11 +178,15 @@ int waddstr (WINDOW *, char *);
int wgetstr (WINDOW *, char *);
int wdeleteln (WINDOW *);
void mvcur(int ly, int lx, int y, int x);
void overwrite(WINDOW *win1, WINDOW *win2);
void wclrtobot(WINDOW *win);
int mvprintw(int y, int x, char *fmt, ...);
int mvwprintw(WINDOW *win, int y, int x, char *fmt, ...);
/*
* Used to be in unctrl.h.
*/
#define unctrl(c) _unctrl[(c) & 0177]
#define unctrl(c) _unctrl[(c) & 0177]
extern char *_unctrl[];
#endif

View File

@@ -1,28 +0,0 @@
/*
* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* @(#)dbm.h 5.1 (Berkeley) 3/27/86
*/
#ifndef NULL
/*
* this is lunacy, we no longer use it (and never should have
* unconditionally defined it), but, this whole file is for
* backwards compatability - someone may rely on this.
*/
#define NULL ((char *) 0)
#endif
#include <ndbm.h>
datum fetch();
datum firstkey();
datum nextkey();
#if 0
datum makdatum();
datum firsthash();
long calchash();
long hashinc();
#endif

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 1980, 1993
* The Regents of the University of California. All rights reserved.
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)fstab.h 8.1.1 (2.11BSD) 1996/1/15
* @(#)fstab.h 8.1.1 (2.11BSD) 1996/1/15
*/
#ifndef _FSTAB_H_
@@ -47,23 +47,20 @@
* if type is "rq", then use concatenation of fs_file and "quotas" to locate
* quota file.
*/
#define _PATH_FSTAB "/etc/fstab"
#define FSTAB "/etc/fstab" /* deprecated */
#define FSTAB_RW "rw" /* read/write device */
#define FSTAB_RQ "rq" /* read/write with quotas */
#define FSTAB_RO "ro" /* read-only device */
#define FSTAB_SW "sw" /* swap device */
#define FSTAB_XX "xx" /* ignore totally */
#define FSTAB_RW "rw" /* read/write device */
#define FSTAB_RQ "rq" /* read/write with quotas */
#define FSTAB_RO "ro" /* read-only device */
#define FSTAB_SW "sw" /* swap device */
#define FSTAB_XX "xx" /* ignore totally */
struct fstab {
char *fs_spec; /* block special device name */
char *fs_file; /* file system path prefix */
char *fs_vfstype; /* File system type, ufs, nfs */
char *fs_mntops; /* Mount options ala -o */
char *fs_type; /* FSTAB_* from fs_mntops */
int fs_freq; /* dump frequency, in days */
int fs_passno; /* pass number on parallel dump */
char *fs_spec; /* block special device name */
char *fs_file; /* file system path prefix */
char *fs_vfstype; /* File system type, ufs, nfs */
char *fs_mntops; /* Mount options ala -o */
char *fs_type; /* FSTAB_* from fs_mntops */
int fs_freq; /* dump frequency, in days */
int fs_passno; /* pass number on parallel dump */
};
struct fstab *getfsent();

View File

@@ -1,10 +1,10 @@
/* grp.h 4.1 83/05/03 */
/* grp.h 4.1 83/05/03 */
struct group { /* see getgrent(3) */
char *gr_name;
char *gr_passwd;
int gr_gid;
char **gr_mem;
struct group { /* see getgrent(3) */
char *gr_name;
char *gr_passwd;
int gr_gid;
char **gr_mem;
};
struct group *getgrent(void);

View File

@@ -3,11 +3,11 @@
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* @(#)lastlog.h 5.1 (Berkeley) 5/30/85
* @(#)lastlog.h 5.1 (Berkeley) 5/30/85
*/
struct lastlog {
time_t ll_time;
char ll_line[8];
char ll_host[16]; /* same as in utmp */
time_t ll_time;
char ll_line[8];
char ll_host[16]; /* same as in utmp */
};

View File

@@ -36,36 +36,6 @@
#ifndef _LIMITS_H_
#define _LIMITS_H_
/*
* We don't need this crud at the moment so save on abuse of the C
* preprocessor by not doing the defines.
#define _POSIX_ARG_MAX 4096
#define _POSIX_CHILD_MAX 6
#define _POSIX_LINK_MAX 8
#define _POSIX_MAX_CANON 255
#define _POSIX_MAX_INPUT 255
#define _POSIX_NAME_MAX 14
#define _POSIX_NGROUPS_MAX 0
#define _POSIX_OPEN_MAX 16
#define _POSIX_PATH_MAX 255
#define _POSIX_PIPE_BUF 512
#define _POSIX_SSIZE_MAX 32767
#define _POSIX_STREAM_MAX 8
#define _POSIX_TZNAME_MAX 3
#define _POSIX2_BC_BASE_MAX 99
#define _POSIX2_BC_DIM_MAX 2048
#define _POSIX2_BC_SCALE_MAX 99
#define _POSIX2_BC_STRING_MAX 1000
#define _POSIX2_EQUIV_CLASS_MAX 2
#define _POSIX2_EXPR_NEST_MAX 32
#define _POSIX2_LINE_MAX 2048
#define _POSIX2_RE_DUP_MAX 255
*/
#include <machine/limits.h>
/* #include <sys/syslimits.h> */
#endif /* !_LIMITS_H_ */

View File

@@ -4,16 +4,16 @@
* specifies the terms and conditions for redistribution.
*/
extern double fabs(), floor(), ceil(), fmod(), ldexp();
extern double sqrt(), hypot(), atof();
extern double sin(), cos(), tan(), asin(), acos(), atan(), atan2();
extern double exp(), log(), log10(), pow();
extern double sinh(), cosh(), tanh();
extern double gamma();
extern double j0(), j1(), jn(), y0(), y1(), yn();
double fabs(), floor(), ceil(), fmod(), ldexp();
double sqrt(), hypot(), atof();
double sin(), cos(), tan(), asin(), acos(), atan(), atan2();
double exp(), log(), log10(), pow();
double sinh(), cosh(), tanh();
double gamma();
double j0(), j1(), jn(), y0(), y1(), yn();
#define HUGE 1.701411733192644270e38
#define LOGHUGE 39
#define HUGE 1.701411733192644270e38
#define LOGHUGE 39
int isnanf(float x);
int isnan(double x);
@@ -31,3 +31,21 @@ float ldexpf(float x, int exp);
double ldexp(double x, int exp);
double fmod(double x, double y);
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
#define M_E 2.7182818284590452354 /* e */
#define M_LOG2E 1.4426950408889634074 /* log 2e */
#define M_LOG10E 0.43429448190325182765 /* log 10e */
#define M_LN2 0.69314718055994530942 /* log e2 */
#define M_LN10 2.30258509299404568402 /* log e10 */
#define M_PI 3.14159265358979323846 /* pi */
#define M_PI_2 1.57079632679489661923 /* pi/2 */
#define M_PI_4 0.78539816339744830962 /* pi/4 */
#define M_1_PI 0.31830988618379067154 /* 1/pi */
#define M_2_PI 0.63661977236758134308 /* 2/pi */
#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */
#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */
#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */
#endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */

View File

@@ -3,14 +3,14 @@
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* @(#)mtab.h 5.1 (Berkeley) 5/30/85
* @(#)mtab.h 5.1 (Berkeley) 5/30/85
*/
/*
* Mounted device accounting file.
*/
struct mtab {
char m_path[32]; /* mounted on pathname */
char m_dname[32]; /* block device pathname */
char m_type[4]; /* read-only, quotas */
char m_path[32]; /* mounted on pathname */
char m_dname[32]; /* block device pathname */
char m_type[4]; /* read-only, quotas */
};

View File

@@ -3,64 +3,60 @@
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* @(#)ndbm.h 5.1.1 (2.11BSD GTE) 12/31/93
* @(#)ndbm.h 5.1.1 (2.11BSD GTE) 12/31/93
*/
/*
* Hashed key data base library.
*/
#define PBLKSIZ 1024
#ifdef pdp11
#define DBLKSIZ 512
#else
#define DBLKSIZ 4096
#endif
#define PBLKSIZ 1024
#define DBLKSIZ 1024
typedef struct {
int dbm_dirf; /* open directory file */
int dbm_pagf; /* open page file */
int dbm_flags; /* flags, see below */
long dbm_maxbno; /* last ``bit'' in dir file */
long dbm_bitno; /* current bit number */
long dbm_hmask; /* hash mask */
long dbm_blkptr; /* current block for dbm_nextkey */
int dbm_keyptr; /* current key for dbm_nextkey */
long dbm_blkno; /* current page to read/write */
long dbm_pagbno; /* current page in pagbuf */
char dbm_pagbuf[PBLKSIZ]; /* page file block buffer */
long dbm_dirbno; /* current block in dirbuf */
char dbm_dirbuf[DBLKSIZ]; /* directory file block buffer */
int dbm_dirf; /* open directory file */
int dbm_pagf; /* open page file */
int dbm_flags; /* flags, see below */
long dbm_maxbno; /* last ``bit'' in dir file */
long dbm_bitno; /* current bit number */
long dbm_hmask; /* hash mask */
long dbm_blkptr; /* current block for dbm_nextkey */
int dbm_keyptr; /* current key for dbm_nextkey */
long dbm_blkno; /* current page to read/write */
long dbm_pagbno; /* current page in pagbuf */
char dbm_pagbuf[PBLKSIZ]; /* page file block buffer */
long dbm_dirbno; /* current block in dirbuf */
char dbm_dirbuf[DBLKSIZ]; /* directory file block buffer */
} DBM;
#define _DBM_RDONLY 0x1 /* data base open read-only */
#define _DBM_IOERR 0x2 /* data base I/O error */
#define _DBM_RDONLY 0x1 /* data base open read-only */
#define _DBM_IOERR 0x2 /* data base I/O error */
#define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY)
#define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY)
#define dbm_error(db) ((db)->dbm_flags & _DBM_IOERR)
/* use this one at your own risk! */
#define dbm_clearerr(db) ((db)->dbm_flags &= ~_DBM_IOERR)
#define dbm_error(db) ((db)->dbm_flags & _DBM_IOERR)
/* use this one at your own risk! */
#define dbm_clearerr(db) ((db)->dbm_flags &= ~_DBM_IOERR)
/* for flock(2) and fstat(2) */
#define dbm_dirfno(db) ((db)->dbm_dirf)
#define dbm_pagfno(db) ((db)->dbm_pagf)
#define dbm_dirfno(db) ((db)->dbm_dirf)
#define dbm_pagfno(db) ((db)->dbm_pagf)
typedef struct {
char *dptr;
int dsize;
char *dptr;
int dsize;
} datum;
/*
* flags to dbm_store()
*/
#define DBM_INSERT 0
#define DBM_REPLACE 1
#define DBM_INSERT 0
#define DBM_REPLACE 1
DBM *dbm_open();
void dbm_close();
datum dbm_fetch();
datum dbm_firstkey();
datum dbm_nextkey();
long dbm_forder();
int dbm_delete();
int dbm_store();
DBM *dbm_open();
void dbm_close();
datum dbm_fetch();
datum dbm_firstkey();
datum dbm_nextkey();
long dbm_forder();
int dbm_delete();
int dbm_store();

View File

@@ -18,17 +18,17 @@
/*
* Protocols
*/
#define IPPROTO_IP 0 /* dummy for IP */
#define IPPROTO_ICMP 1 /* control message protocol */
#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
#define IPPROTO_TCP 6 /* tcp */
#define IPPROTO_EGP 8 /* exterior gateway protocol */
#define IPPROTO_PUP 12 /* pup */
#define IPPROTO_UDP 17 /* user datagram protocol */
#define IPPROTO_IDP 22 /* xns idp */
#define IPPROTO_IP 0 /* dummy for IP */
#define IPPROTO_ICMP 1 /* control message protocol */
#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
#define IPPROTO_TCP 6 /* tcp */
#define IPPROTO_EGP 8 /* exterior gateway protocol */
#define IPPROTO_PUP 12 /* pup */
#define IPPROTO_UDP 17 /* user datagram protocol */
#define IPPROTO_IDP 22 /* xns idp */
#define IPPROTO_RAW 255 /* raw IP packet */
#define IPPROTO_MAX 256
#define IPPROTO_RAW 255 /* raw IP packet */
#define IPPROTO_MAX 256
/*
@@ -37,21 +37,21 @@
* Ports > IPPORT_USERRESERVED are reserved
* for servers, not necessarily privileged.
*/
#define IPPORT_RESERVED 1024
#define IPPORT_USERRESERVED 5000
#define IPPORT_RESERVED 1024
#define IPPORT_USERRESERVED 5000
/*
* Link numbers
*/
#define IMPLINK_IP 155
#define IMPLINK_LOWEXPER 156
#define IMPLINK_HIGHEXPER 158
#define IMPLINK_IP 155
#define IMPLINK_LOWEXPER 156
#define IMPLINK_HIGHEXPER 158
/*
* Internet address (a structure for historical reasons)
*/
struct in_addr {
u_long s_addr;
u_long s_addr;
};
/*
@@ -59,51 +59,51 @@ struct in_addr {
* On subnets, the decomposition of addresses to host and net parts
* is done according to subnet mask, not the masks here.
*/
#define IN_CLASSA(i) (((long)(i) & 0x80000000L) == 0)
#define IN_CLASSA_NET 0xff000000L
#define IN_CLASSA_NSHIFT 24
#define IN_CLASSA_HOST 0x00ffffffL
#define IN_CLASSA_MAX 128
#define IN_CLASSA(i) (((long)(i) & 0x80000000L) == 0)
#define IN_CLASSA_NET 0xff000000L
#define IN_CLASSA_NSHIFT 24
#define IN_CLASSA_HOST 0x00ffffffL
#define IN_CLASSA_MAX 128
#define IN_CLASSB(i) (((long)(i) & 0xc0000000L) == 0x80000000L)
#define IN_CLASSB_NET 0xffff0000L
#define IN_CLASSB_NSHIFT 16
#define IN_CLASSB_HOST 0x0000ffffL
#define IN_CLASSB_MAX 65536
#define IN_CLASSB(i) (((long)(i) & 0xc0000000L) == 0x80000000L)
#define IN_CLASSB_NET 0xffff0000L
#define IN_CLASSB_NSHIFT 16
#define IN_CLASSB_HOST 0x0000ffffL
#define IN_CLASSB_MAX 65536
#define IN_CLASSC(i) (((long)(i) & 0xe0000000L) == 0xc0000000L)
#define IN_CLASSC_NET 0xffffff00L
#define IN_CLASSC_NSHIFT 8
#define IN_CLASSC_HOST 0x000000ffL
#define IN_CLASSC(i) (((long)(i) & 0xe0000000L) == 0xc0000000L)
#define IN_CLASSC_NET 0xffffff00L
#define IN_CLASSC_NSHIFT 8
#define IN_CLASSC_HOST 0x000000ffL
#define IN_CLASSD(i) (((long)(i) & 0xf0000000L) == 0xe0000000L)
#define IN_MULTICAST(i) IN_CLASSD(i)
#define IN_CLASSD(i) (((long)(i) & 0xf0000000L) == 0xe0000000L)
#define IN_MULTICAST(i) IN_CLASSD(i)
#define IN_EXPERIMENTAL(i) (((long)(i) & 0xe0000000L) == 0xe0000000L)
#define IN_BADCLASS(i) (((long)(i) & 0xf0000000L) == 0xf0000000L)
#define IN_EXPERIMENTAL(i) (((long)(i) & 0xe0000000L) == 0xe0000000L)
#define IN_BADCLASS(i) (((long)(i) & 0xf0000000L) == 0xf0000000L)
#define INADDR_ANY 0x00000000L
#define INADDR_BROADCAST 0xffffffffL /* must be masked */
#define INADDR_ANY 0x00000000L
#define INADDR_BROADCAST 0xffffffffL /* must be masked */
#ifndef KERNEL
#define INADDR_NONE 0xffffffffL /* -1 return */
#define INADDR_NONE 0xffffffffL /* -1 return */
#endif
#define IN_LOOPBACKNET 127 /* official! */
#define IN_LOOPBACKNET 127 /* official! */
/*
* Socket address, internet style.
*/
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
/*
* Options for use with [gs]etsockopt at the IP level.
*/
#define IP_OPTIONS 1 /* set/get IP per-packet options */
#define IP_OPTIONS 1 /* set/get IP per-packet options */
/*
* Definitions for inet sysctl operations.
@@ -111,55 +111,55 @@ struct sockaddr_in {
* Third level is protocol number.
* Fourth level is desired variable within that protocol.
*/
#define IPPROTO_MAXID (IPPROTO_IDP + 1) /* don't list to IPPROTO_MAX */
#define IPPROTO_MAXID (IPPROTO_IDP + 1) /* don't list to IPPROTO_MAX */
#ifndef KERNEL
#define CTL_IPPROTO_NAMES { \
{ "ip", CTLTYPE_NODE }, \
{ "icmp", CTLTYPE_NODE }, \
{ "igmp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "tcp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "udp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "idp", CTLTYPE_NODE }, \
#ifndef KERNEL
#define CTL_IPPROTO_NAMES { \
{ "ip", CTLTYPE_NODE }, \
{ "icmp", CTLTYPE_NODE }, \
{ "igmp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "tcp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "udp", CTLTYPE_NODE }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ 0, 0 }, \
{ "idp", CTLTYPE_NODE }, \
}
#endif /* KERNEL */
/*
* Names for IP sysctl objects
*/
#define IPCTL_FORWARDING 1 /* act as router */
#define IPCTL_SENDREDIRECTS 2 /* may send redirects when forwarding */
#define IPCTL_DEFTTL 3 /* default TTL */
#define IPCTL_FORWARDING 1 /* act as router */
#define IPCTL_SENDREDIRECTS 2 /* may send redirects when forwarding */
#define IPCTL_DEFTTL 3 /* default TTL */
#ifdef notyet
#define IPCTL_DEFMTU 4 /* default MTU */
#define IPCTL_DEFMTU 4 /* default MTU */
#endif
#define IPCTL_FORWSRCRT 5 /* forward source-routed dgrams */
#define IPCTL_MAXID 6
#define IPCTL_FORWSRCRT 5 /* forward source-routed dgrams */
#define IPCTL_MAXID 6
#ifndef KERNEL
#define IPCTL_NAMES { \
{ 0, 0 }, \
{ "forwarding", CTLTYPE_INT }, \
{ "redirect", CTLTYPE_INT }, \
{ "ttl", CTLTYPE_INT }, \
{ "mtu", CTLTYPE_INT }, \
{ "forwsrcrt", CTLTYPE_INT }, \
#ifndef KERNEL
#define IPCTL_NAMES { \
{ 0, 0 }, \
{ "forwarding", CTLTYPE_INT }, \
{ "redirect", CTLTYPE_INT }, \
{ "ttl", CTLTYPE_INT }, \
{ "mtu", CTLTYPE_INT }, \
{ "forwsrcrt", CTLTYPE_INT }, \
}
#endif /* KERNEL */

View File

@@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
@@ -30,37 +30,37 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef _NLIST_H_
#define _NLIST_H_
#ifndef _NLIST_H_
#define _NLIST_H_
#include <sys/types.h>
/*
* Symbol table entry format.
*/
struct nlist {
char *n_name; /* In memory address of symbol name,
or string table offset (file) */
u_short n_len; /* Length of name in bytes */
u_short n_type; /* Type of symbol - see below */
u_int n_value; /* Symbol value */
struct nlist {
char *n_name; /* In memory address of symbol name,
* or string table offset (file) */
u_short n_len; /* Length of name in bytes */
u_short n_type; /* Type of symbol - see below */
u_int n_value; /* Symbol value */
};
/*
* Simple values for n_type.
*/
#define N_UNDF 0x00 /* undefined */
#define N_ABS 0x01 /* absolute */
#define N_TEXT 0x02 /* text segment */
#define N_DATA 0x03 /* data segment */
#define N_BSS 0x04 /* bss segment */
#define N_STRNG 0x05 /* string segment (for assembler) */
#define N_COMM 0x06 /* .comm segment (for assembler) */
#define N_FN 0x1f /* file name */
#define N_UNDF 0x00 /* undefined */
#define N_ABS 0x01 /* absolute */
#define N_TEXT 0x02 /* text segment */
#define N_DATA 0x03 /* data segment */
#define N_BSS 0x04 /* bss segment */
#define N_STRNG 0x05 /* string segment (for assembler) */
#define N_COMM 0x06 /* .comm segment (for assembler) */
#define N_FN 0x1f /* file name */
#define N_TYPE 0x1f /* mask for all the type bits */
#define N_EXT 0x20 /* external (global) bit, OR'ed in */
#define N_WEAK 0x40 /* weak reference bit, OR'ed in */
#define N_LOC 0x80 /* local, for assembler */
#define N_TYPE 0x1f /* mask for all the type bits */
#define N_EXT 0x20 /* external (global) bit, OR'ed in */
#define N_WEAK 0x40 /* weak reference bit, OR'ed in */
#define N_LOC 0x80 /* local, for assembler */
/*
* Get symbols from a file.
@@ -72,4 +72,4 @@ int nlist (char *name, struct nlist *list);
*/
int knlist (struct nlist *list);
#endif /* !_NLIST_H_ */
#endif /* !_NLIST_H_ */

View File

@@ -14,46 +14,53 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
#define _PATH_BSHELL "/bin/sh"
#define _PATH_CSHELL "/bin/csh"
#define _PATH_CP "/bin/cp"
#define _PATH_BSHELL "/bin/sh"
#define _PATH_CSHELL "/bin/csh"
#define _PATH_CP "/bin/cp"
#define _PATH_ECHO "/bin/echo"
#define _PATH_MORE "/bin/more"
#define _PATH_RSH "/bin/rsh"
#define _PATH_VI "/bin/vi"
#define _PATH_MORE "/bin/more"
#define _PATH_RSH "/bin/rsh"
#define _PATH_VI "/bin/vi"
#define _PATH_CORE "/core"
#define _PATH_DEV "/dev/"
#define _PATH_CONSOLE "/dev/console"
#define _PATH_DEVNULL "/dev/null"
#define _PATH_TTY "/dev/tty"
#define _PATH_DEV "/dev/"
#define _PATH_CONSOLE "/dev/console"
#define _PATH_LOG "/dev/log"
#define _PATH_DEVNULL "/dev/null"
#define _PATH_TTY "/dev/tty"
#define _PATH_MEM "/dev/mem"
#define _PATH_SWAP "/dev/swap"
#define _PATH_LOCALTIME "/etc/localtime"
#define _PATH_MOTD "/etc/motd"
#define _PATH_NOLOGIN "/etc/nologin"
#define _PATH_FSTAB "/etc/fstab"
#define _PATH_LOCALTIME "/etc/localtime"
#define _PATH_MOTD "/etc/motd"
#define _PATH_NOLOGIN "/etc/nologin"
#define _PATH_PASSWD "/etc/passwd"
#define _PATH_PTMP "/etc/ptmp"
#define _PATH_SHADOW "/etc/shadow"
#define _PATH_TERMCAP "/etc/termcap"
#define _PATH_USRLIB "/lib/"
#define _PATH_CTIMED "/libexec/ctimed"
#define _PATH_CTIMED "/libexec/ctimed"
#define _PATH_LOCALLIB "/local/lib/"
#define _PATH_SBIN "/sbin/"
#define _PATH_USRSBIN "/sbin/"
#define _PATH_SENDMAIL "/sbin/sendmail"
#define _PATH_SBIN "/sbin/"
#define _PATH_USRSBIN "/sbin/"
#define _PATH_MKPASSWD "/sbin/mkpasswd"
#define _PATH_SENDMAIL "/sbin/sendmail"
#define _PATH_SHARE "/share/"
#define _PATH_ZONEINFO "/share/zoneinfo" /* Time zone object file directory */
#define _PATH_TMP "/tmp/"
#define _PATH_USRTMP "/tmp/"
#define _PATH_LASTLOG "/var/log/lastlog"
#define _PATH_ZONEINFO "/share/zoneinfo" /* Time zone object file directory */
#define _PATH_TMP "/tmp/"
#define _PATH_USRTMP "/tmp/"
#define _PATH_LASTLOG "/var/log/lastlog"
#define _PATH_MESSAGES "/var/log/messages"
#define _PATH_WTMP "/var/log/wtmp"
#define _PATH_MAIL "/var/mail/"
#define _PATH_VARRUN "/var/run/"
#define _PATH_DEVDB "/var/run/dev"
#define _PATH_VARRUN "/var/run/"
#define _PATH_DEVDB "/var/run/dev"
#define _PATH_UTMP "/var/run/utmp"
#define _PATH_ARTMP "/tmp/ar.XXXXXX"
#define _PATH_RANTMP "/tmp/ranlib.XXXXXX"
#define _PATH_STDPATH "/bin"
#define _PATH_SYSPATH "/bin:/sbin:/local"
#define _PATH_MAN "/share/man:/local/man"
#define _PATH_LOCALMAN "/local/man"
#define _PATH_MAN "/share/man:/local/man"
#define _PATH_LOCALMAN "/local/man"
#define _PATH_HUSHLOGIN ".hushlogin"
#define _PATH_HUSHLOGIN ".hushlogin"

View File

@@ -1,229 +0,0 @@
/*
* Copyright (c) 1983 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* @(#)pcc.h 5.1 (Berkeley) 5/30/85
*/
/*
* This file contains definitions for all the constants and structures
* needed to use the intermediate code files generated and read by
* the Portable C Compiler and related compilers.
*
* Rules for changing this code:
* 1) All op values must be integer constants -- this permits us to run
* a 'sed' script on this file to create %term declarations for yacc.
* 2) Because the PCC uses fancy ASG and UNARY macros, assignment
* operators must have values 1 greater than corresponding normal
* operators, and unary operators must have values 2 greater ditto.
* 3) Ops used only by f1 must have values >= 150 (PCCF_FORTOPS).
* 4) Other language-dependent ops must have values >= 200.
*/
# ifndef PCC_TOKENS
# define PCC_TOKENS 0
# define PCC_ERROR 1 /* an error node */
# define PCC_FREE 2 /* an unused node */
/*
* Constants.
*/
# define PCC_STRING 3 /* a string constant */
# define PCC_ICON 4 /* an integer constant */
# define PCC_FCON 5 /* a floating point constant */
# define PCC_DCON 6 /* a double precision f.p. constant */
/*
* Leaf types.
*/
# define PCC_NAME 7 /* an identifier */
# define PCC_REG 8 /* a register */
# define PCC_OREG 9 /* register and offset */
# define PCC_CCODES 10 /* condition codes */
# define PCC_FLD 11 /* a bit field */
/*
* Arithmetic operators.
*/
# define PCC_PLUS 12 /* + */
# define PCC_PLUSEQ 13 /* += */
# define PCC_UPLUS 14 /* unary + (for completeness) */
# define PCC_MINUS 15 /* - */
# define PCC_MINUSEQ 16 /* -= */
# define PCC_UMINUS 17 /* unary - */
# define PCC_MUL 18 /* * */
# define PCC_MULEQ 19 /* *= */
/* Reserve a slot for 'unary *', which is PCC jargon for PCC_DEREF (yech) */
# define PCC_DIV 21 /* / */
# define PCC_DIVEQ 22 /* /= */
# define PCC_MOD 23 /* % */
# define PCC_MODEQ 24 /* %= */
# define PCC_INCR 25 /* ++ */
# define PCC_DECR 26 /* -- */
# define PCC_ASSIGN 27 /* = (these last 3 are stretching it) */
/*
* Bit operators.
*/
# define PCC_AND 28 /* & */
# define PCC_ANDEQ 29 /* &= */
/* Reserve a slot for 'unary &', jargon for PCC_ADDROF */
# define PCC_OR 31 /* | */
# define PCC_OREQ 32 /* |= */
# define PCC_ER 33 /* ^ */
# define PCC_EREQ 34 /* ^= */
# define PCC_LS 35 /* << */
# define PCC_LSEQ 36 /* <<= */
# define PCC_RS 37 /* >> */
# define PCC_RSEQ 38 /* >>= */
# define PCC_COMPL 39 /* ~ */
/*
* Booleans.
*/
# define PCC_EQ 40 /* == */
# define PCC_NE 41 /* != */
# define PCC_LE 42 /* <= */
# define PCC_LT 43 /* < */
# define PCC_GE 44 /* >= */
# define PCC_GT 45 /* > */
# define PCC_ULE 46 /* unsigned <= */
# define PCC_ULT 47 /* unsigned < */
# define PCC_UGE 48 /* unsigned >= */
# define PCC_UGT 49 /* unsigned > */
# define PCC_QUEST 50 /* ? (for conditional expressions) */
# define PCC_COLON 51 /* : (for conditional expressions) */
# define PCC_ANDAND 52 /* && */
# define PCC_OROR 53 /* || */
# define PCC_NOT 54 /* ! */
/*
* Function calls.
*/
# define PCC_CALL 55 /* call by value */
/* no ASG */
# define PCC_UCALL 57 /* call with no arguments */
# define PCC_FORTCALL 58 /* call by reference? */
/* no ASG */
# define PCC_UFORTCALL 60 /* ??? */
# ifdef INLINE
# define PCC_INLINE 61 /* inline function */
/* no ASG */
# define PCC_UINLINE 63 /* inline with no arguments */
# endif INLINE
/*
* Referencing and dereferencing.
*/
# define PCC_DEREF 20 /* * */
# define PCC_ADDROF 30 /* & */
/*
* Special structure operators.
*/
# define PCC_DOT 64 /* . */
# define PCC_STREF 65 /* -> */
# define PCC_STASG 66 /* structure assignment */
# define PCC_STARG 67 /* an argument of type structure */
# define PCC_STCALL 68 /* a function of type structure */
/* no ASG */
# define PCC_USTCALL 70 /* unary structure function */
/*
* Conversions.
*/
# define PCC_SCONV 71 /* scalar conversion */
# define PCC_PCONV 72 /* pointer conversion */
# define PCC_PMCONV 73 /* pointer multiply conversion */
# define PCC_PVCONV 74 /* pointer divide conversion */
# define PCC_CAST 75 /* redundant? */
/*
* Bracket types.
*/
# define PCC_LB 76 /* [ */
# define PCC_RB 77 /* ] */
/*
* Comma nodes.
*/
# define PCC_COMOP 78 /* , (in expressions) */
# define PCC_CM 79 /* , (in argument lists) */
/*
* Miscellaneous.
*/
# define PCC_FORCE 80 /* result of last expression goes in r0 */
# define PCC_GOTO 81 /* unconditional goto */
# define PCC_CBRANCH 82 /* goto label if !test */
# define PCC_RETURN 83 /* return from function */
# define PCC_INIT 84 /* initialized data */
# define PCC_TYPE 85 /* a type */
# define PCC_CLASS 86 /* a storage class */
# define PCC_MAXOP 86 /* highest numbered PCC op */
/*
* Special codes for interfacing to /lib/f1.
*/
# define PCCF_FORTOPS 150
# define PCCF_FTEXT 150 /* pass literal assembler text */
# define PCCF_FEXPR 151 /* a statement */
# define PCCF_FSWITCH 152 /* not implemented */
# define PCCF_FLBRAC 153 /* beginning of subroutine */
# define PCCF_FRBRAC 154 /* end of subroutine */
# define PCCF_FEOF 155 /* end of file */
# define PCCF_FARIF 156 /* not implemented */
# define PCCF_FLABEL 157 /* an f77 label */
# endif PCC_TOKENS
/*
* Types, as encoded in intermediate file cookies.
*/
# define PCCT_UNDEF 0
# define PCCT_FARG 1 /* function argument */
# define PCCT_CHAR 2
# define PCCT_SHORT 3
# define PCCT_INT 4
# define PCCT_LONG 5
# define PCCT_FLOAT 6
# define PCCT_DOUBLE 7
# define PCCT_STRTY 8
# define PCCT_UNIONTY 9
# define PCCT_ENUMTY 10
# define PCCT_MOETY 11 /* member of enum */
# define PCCT_UCHAR 12
# define PCCT_USHORT 13
# define PCCT_UNSIGNED 14
# define PCCT_ULONG 15
/*
* Type modifiers.
*/
# define PCCTM_PTR 020
# define PCCTM_FTN 040
# define PCCTM_ARY 060
# define PCCTM_BASETYPE 017
# define PCCTM_TYPESHIFT 2
/*
* Useful macros. 'PCCOM' macros apply to ops.
*/
# define PCCOM_ASG 1+
# define PCCOM_UNARY 2+
# define PCCOM_NOASG (-1)+
# define PCCOM_NOUNARY (-2)+
# define PCCM_TRIPLE(op, var, type) \
((op) | ((var) << 8) | (long) (type) << 16)
# define PCCM_TEXT(s) \
PCCM_TRIPLE(PCCF_FTEXT, (strlen(s) + 3) / 4, 0)
# define PCCM_ADDTYPE(t, m) \
((((t) &~ PCCTM_BASETYPE) << PCCTM_TYPESHIFT) | \
(m) | ((t) & PCCTM_BASETYPE))

View File

@@ -14,27 +14,27 @@
#endif
struct psout {
dev_t o_ttyd; /* u_ttyd */
int o_flag; /* p_flag */
short o_pid; /* p_pid */
char o_tty[3]; /* 1st 2 chars of tty after 'tty' */
char o_stat; /* p_stat */
short o_uid; /* p_uid */
char o_uname[UT_NAMESIZE]; /* login name of process owner */
short o_ppid; /* p_ppid */
char o_cpu; /* p_cpu */
char o_pri; /* p_pri */
char o_nice; /* p_nice */
short o_addr0; /* p_addr[0] */
short o_size; /* p_size */
caddr_t o_wchan; /* p_wchan */
time_t o_utime; /* u_utime */
time_t o_stime; /* u_stime */
time_t o_cutime; /* u_cutime */
time_t o_cstime; /* u_cstime */
short o_pgrp; /* p_pgrp */
int o_sigs; /* sum of SIGINT & SIGQUIT,
if == 2 proc is ignoring both.*/
char o_comm[MAXCOMLEN+1]; /* u_comm */
char o_args[64]; /* best guess at args to process */
dev_t o_ttyd; /* u_ttyd */
int o_flag; /* p_flag */
short o_pid; /* p_pid */
char o_tty[3]; /* 1st 2 chars of tty after 'tty' */
char o_stat; /* p_stat */
short o_uid; /* p_uid */
char o_uname[UT_NAMESIZE]; /* login name of process owner */
short o_ppid; /* p_ppid */
char o_cpu; /* p_cpu */
char o_pri; /* p_pri */
char o_nice; /* p_nice */
short o_addr0; /* p_addr[0] */
short o_size; /* p_size */
caddr_t o_wchan; /* p_wchan */
time_t o_utime; /* u_utime */
time_t o_stime; /* u_stime */
time_t o_cutime; /* u_cutime */
time_t o_cstime; /* u_cstime */
short o_pgrp; /* p_pgrp */
int o_sigs; /* sum of SIGINT & SIGQUIT,
* if == 2 proc is ignoring both.*/
char o_comm[MAXCOMLEN+1]; /* u_comm */
char o_args[64]; /* best guess at args to process */
};

View File

@@ -15,22 +15,17 @@
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
#define _PATH_PASSWD "/etc/passwd"
#define _PATH_SHADOW "/etc/shadow"
#define _PATH_MKPASSWD "/sbin/mkpasswd"
#define _PATH_PTMP "/etc/ptmp"
#define _PW_KEYBYNAME '0'
#define _PW_KEYBYUID '1'
#define _PW_KEYBYNAME '0'
#define _PW_KEYBYUID '1'
struct passwd {
char *pw_name; /* user name */
char *pw_passwd; /* encrypted password */
int pw_uid; /* user uid */
int pw_gid; /* user gid */
char *pw_gecos; /* real name */
char *pw_dir; /* home directory */
char *pw_shell; /* default shell */
char *pw_name; /* user name */
char *pw_passwd; /* encrypted password */
int pw_uid; /* user uid */
int pw_gid; /* user gid */
char *pw_gecos; /* real name */
char *pw_dir; /* home directory */
char *pw_shell; /* default shell */
};
struct passwd *getpwent(), *getpwuid(), *getpwnam();

View File

@@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
@@ -32,15 +32,15 @@
*/
#ifndef _RANLIB_H_
#define _RANLIB_H_
#define _RANLIB_H_
#define RANLIBMAG "__.SYMDEF" /* archive file name */
#define RANLIBSKEW 3 /* creation time offset */
#define RANLIBMAG "__.SYMDEF" /* archive file name */
#define RANLIBSKEW 3 /* creation time offset */
struct ranlib {
int ran_len; /* 1 byte - name length in bytes */
unsigned ran_off; /* 4 bytes - file offset */
char *ran_name; /* in memory symbol name */
int ran_len; /* 1 byte - name length in bytes */
unsigned ran_off; /* 4 bytes - file offset */
char *ran_name; /* in memory symbol name */
};
#endif /* !_RANLIB_H_ */

View File

@@ -5,14 +5,15 @@
* not the System V one.
*/
#define NSUBEXP 10
typedef struct regexp {
char *startp[NSUBEXP];
char *endp[NSUBEXP];
char regstart; /* Internal use only. */
char reganch; /* Internal use only. */
char *regmust; /* Internal use only. */
int regmlen; /* Internal use only. */
char program[1]; /* Unwarranted chumminess with compiler. */
char *startp[NSUBEXP];
char *endp[NSUBEXP];
char regstart; /* Internal use only. */
char reganch; /* Internal use only. */
char *regmust; /* Internal use only. */
int regmlen; /* Internal use only. */
char program[1]; /* Unwarranted chumminess with compiler. */
} regexp;
extern regexp *regcomp();

View File

@@ -10,105 +10,105 @@ extern int LINES, COLS;
/*
* pseudo functions for standard screen
*/
#define addch(ch) waddch(stdscr, ch)
#define getch() wgetch(stdscr)
#define addstr(str) waddstr(stdscr, str)
#define getstr(str) wgetstr(stdscr, str)
#define move(y, x) wmove(stdscr, y, x)
#define clear() wclear(stdscr)
#define erase() werase(stdscr)
#define clrtobot() wclrtobot(stdscr)
#define clrtoeol() wclrtoeol(stdscr)
#define insertln() winsertln(stdscr)
#define deleteln() wdeleteln(stdscr)
#define refresh() wrefresh(stdscr)
#define inch() winch(stdscr)
#define insch(c) winsch(stdscr,c)
#define delch() wdelch(stdscr)
#define standout() wstandout(stdscr)
#define standend() wstandend(stdscr)
#define addch(ch) waddch(stdscr, ch)
#define getch() wgetch(stdscr)
#define addstr(str) waddstr(stdscr, str)
#define getstr(str) wgetstr(stdscr, str)
#define move(y, x) wmove(stdscr, y, x)
#define clear() wclear(stdscr)
#define erase() werase(stdscr)
#define clrtobot() wclrtobot(stdscr)
#define clrtoeol() wclrtoeol(stdscr)
#define insertln() winsertln(stdscr)
#define deleteln() wdeleteln(stdscr)
#define refresh() wrefresh(stdscr)
#define inch() winch(stdscr)
#define insch(c) winsch(stdscr,c)
#define delch() wdelch(stdscr)
#define standout() wstandout(stdscr)
#define standend() wstandend(stdscr)
/*
* mv functions
*/
#define mvwaddch(win,y,x,ch) wmove(win,y,x) == 0 ? 0 : waddch(win,ch)
#define mvwgetch(win,y,x) wmove(win,y,x) == 0 ? 0 : wgetch(win)
#define mvwaddstr(win,y,x,str) wmove(win,y,x) == 0 ? 0 : waddstr(win,str)
#define mvwaddch(win,y,x,ch) wmove(win,y,x) == 0 ? 0 : waddch(win,ch)
#define mvwgetch(win,y,x) wmove(win,y,x) == 0 ? 0 : wgetch(win)
#define mvwaddstr(win,y,x,str) wmove(win,y,x) == 0 ? 0 : waddstr(win,str)
#define mvwgetstr(win,y,x,str) wmove(win,y,x) == 0 ? 0 : wgetstr(win,str)
#define mvwinch(win,y,x) wmove(win,y,x) == 0 ? 0 : winch(win)
#define mvwdelch(win,y,x) wmove(win,y,x) == 0 ? 0 : wdelch(win)
#define mvwinsch(win,y,x,c) wmove(win,y,x) == 0 ? 0 : winsch(win,c)
#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch)
#define mvgetch(y,x) mvwgetch(stdscr,y,x)
#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str)
#define mvwinch(win,y,x) wmove(win,y,x) == 0 ? 0 : winch(win)
#define mvwdelch(win,y,x) wmove(win,y,x) == 0 ? 0 : wdelch(win)
#define mvwinsch(win,y,x,c) wmove(win,y,x) == 0 ? 0 : winsch(win,c)
#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch)
#define mvgetch(y,x) mvwgetch(stdscr,y,x)
#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str)
#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str)
#define mvinch(y,x) mvwinch(stdscr,y,x)
#define mvdelch(y,x) mvwdelch(stdscr,y,x)
#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c)
#define mvinch(y,x) mvwinch(stdscr,y,x)
#define mvdelch(y,x) mvwdelch(stdscr,y,x)
#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c)
#ifdef TODO
#define TRUE (1)
#define FALSE (0)
#define ERR (0)
#define OK (1)
#define TRUE (1)
#define FALSE (0)
#define ERR (0)
#define OK (1)
/*
* Capabilities from termcap
*/
extern int AM, BS, CA, DA, DB, EO, HC, HZ, IN, MI, MS, NC, NS, OS, UL,
XB, XN, XT, XS, XX;
extern char *AL, *BC, *BT, *CD, *CE, *CL, *CM, *CR, *CS, *DC, *DL,
*DM, *DO, *ED, *EI, *K0, *K1, *K2, *K3, *K4, *K5, *K6,
*K7, *K8, *K9, *HO, *IC, *IM, *IP, *KD, *KE, *KH, *KL,
*KR, *KS, *KU, *LL, *MA, *ND, *NL, *RC, *SC, *SE, *SF,
*SO, *SR, *TA, *TE, *TI, *UC, *UE, *UP, *US, *VB, *VS,
*VE, *AL_PARM, *DL_PARM, *UP_PARM, *DOWN_PARM,
*LEFT_PARM, *RIGHT_PARM;
extern char PC;
XB, XN, XT, XS, XX;
extern char *AL, *BC, *BT, *CD, *CE, *CL, *CM, *CR, *CS, *DC, *DL,
*DM, *DO, *ED, *EI, *K0, *K1, *K2, *K3, *K4, *K5, *K6,
*K7, *K8, *K9, *HO, *IC, *IM, *IP, *KD, *KE, *KH, *KL,
*KR, *KS, *KU, *LL, *MA, *ND, *NL, *RC, *SC, *SE, *SF,
*SO, *SR, *TA, *TE, *TI, *UC, *UE, *UP, *US, *VB, *VS,
*VE, *AL_PARM, *DL_PARM, *UP_PARM, *DOWN_PARM,
*LEFT_PARM, *RIGHT_PARM;
extern char PC;
/*
* From the tty modes...
*/
extern int GT, NONL, UPPERCASE, normtty, _pfast;
extern int GT, NONL, UPPERCASE, normtty, _pfast;
extern int My_term, _echoit, _rawmode, _endwin;
extern int My_term, _echoit, _rawmode, _endwin;
extern char *Def_term, ttytype[];
extern char *Def_term, ttytype[];
extern int _tty_ch, _res_flg;
extern int _tty_ch, _res_flg;
extern SGTTY _tty;
extern SGTTY _tty;
/*
* pseudo functions
*/
#define clearok(win,bf) (win->_clear = bf)
#define leaveok(win,bf) (win->_leave = bf)
#define scrollok(win,bf) (win->_scroll = bf)
#define flushok(win,bf) (bf ? (win->_flags |= _FLUSH):(win->_flags &= ~_FLUSH))
#define getyx(win,y,x) y = win->_cury, x = win->_curx
#define winch(win) (win->_y[win->_cury][win->_curx] & 0177)
#define clearok(win,bf) (win->_clear = bf)
#define leaveok(win,bf) (win->_leave = bf)
#define scrollok(win,bf) (win->_scroll = bf)
#define flushok(win,bf) (bf ? (win->_flags |= _FLUSH):(win->_flags &= ~_FLUSH))
#define getyx(win,y,x) y = win->_cury, x = win->_curx
#define winch(win) (win->_y[win->_cury][win->_curx] & 0177)
#define raw() (_tty.sg_flags|=RAW, _pfast=_rawmode=TRUE, ioctl(_tty_ch,TIOCSETP,&_tty))
#define noraw() (_tty.sg_flags&=~RAW,_rawmode=FALSE,_pfast=!(_tty.sg_flags&CRMOD),ioctl(_tty_ch,TIOCSETP,&_tty))
#define raw() (_tty.sg_flags|=RAW, _pfast=_rawmode=TRUE, ioctl(_tty_ch,TIOCSETP,&_tty))
#define noraw() (_tty.sg_flags&=~RAW,_rawmode=FALSE,_pfast=!(_tty.sg_flags&CRMOD),ioctl(_tty_ch,TIOCSETP,&_tty))
#define cbreak() (_tty.sg_flags |= CBREAK, _rawmode = TRUE, ioctl(_tty_ch,TIOCSETP,&_tty))
#define nocbreak() (_tty.sg_flags &= ~CBREAK,_rawmode=FALSE,ioctl(_tty_ch,TIOCSETP,&_tty))
#define echo() (_tty.sg_flags |= ECHO, _echoit = TRUE, ioctl(_tty_ch, TIOCSETP, &_tty))
#define echo() (_tty.sg_flags |= ECHO, _echoit = TRUE, ioctl(_tty_ch, TIOCSETP, &_tty))
#define noecho() (_tty.sg_flags &= ~ECHO, _echoit = FALSE, ioctl(_tty_ch, TIOCSETP, &_tty))
#define nl() (_tty.sg_flags |= CRMOD, _pfast = _rawmode,ioctl(_tty_ch, TIOCSETP, &_tty))
#define nonl() (_tty.sg_flags &= ~CRMOD,_pfast = TRUE, ioctl(_tty_ch, TIOCSETP,&_tty))
#define savetty() ((void) ioctl(_tty_ch, TIOCGETP, &_tty), _res_flg = _tty.sg_flags)
#define resetty() (_tty.sg_flags = _res_flg, (void) ioctl(_tty_ch, TIOCSETP, &_tty))
#define nl() (_tty.sg_flags |= CRMOD, _pfast = _rawmode,ioctl(_tty_ch, TIOCSETP, &_tty))
#define nonl() (_tty.sg_flags &= ~CRMOD,_pfast = TRUE, ioctl(_tty_ch, TIOCSETP,&_tty))
#define savetty() ((void) ioctl(_tty_ch, TIOCGETP, &_tty), _res_flg = _tty.sg_flags)
#define resetty() (_tty.sg_flags = _res_flg, (void) ioctl(_tty_ch, TIOCSETP, &_tty))
#define erasechar() (_tty.sg_erase)
#define killchar() (_tty.sg_kill)
#define baudrate() (_tty.sg_ospeed)
#define erasechar() (_tty.sg_erase)
#define killchar() (_tty.sg_kill)
#define baudrate() (_tty.sg_ospeed)
/*
* Used to be in unctrl.h.
*/
#define unctrl(c) _unctrl[(c) & 0177]
#define unctrl(c) _unctrl[(c) & 0177]
extern char *_unctrl[];
#endif

View File

@@ -1,38 +1,38 @@
/* open-only flags */
#define O_RDONLY 0x0000 /* open for reading only */
#define O_WRONLY 0x0001 /* open for writing only */
#define O_RDWR 0x0002 /* open for reading and writing */
#define O_ACCMODE 0x0003 /* mask for above modes */
#define O_RDONLY 0x0000 /* open for reading only */
#define O_WRONLY 0x0001 /* open for writing only */
#define O_RDWR 0x0002 /* open for reading and writing */
#define O_ACCMODE 0x0003 /* mask for above modes */
#define O_NONBLOCK 0x0004 /* no delay */
#define O_APPEND 0x0008 /* set append mode */
#define O_SHLOCK 0x0010 /* open with shared file lock */
#define O_EXLOCK 0x0020 /* open with exclusive file lock */
#define O_ASYNC 0x0040 /* signal pgrp when data ready */
#define O_FSYNC 0x0080 /* synchronous writes */
#define O_CREAT 0x0200 /* create if nonexistant */
#define O_TRUNC 0x0400 /* truncate to zero length */
#define O_EXCL 0x0800 /* error if already exists */
#define O_NONBLOCK 0x0004 /* no delay */
#define O_APPEND 0x0008 /* set append mode */
#define O_SHLOCK 0x0010 /* open with shared file lock */
#define O_EXLOCK 0x0020 /* open with exclusive file lock */
#define O_ASYNC 0x0040 /* signal pgrp when data ready */
#define O_FSYNC 0x0080 /* synchronous writes */
#define O_CREAT 0x0200 /* create if nonexistant */
#define O_TRUNC 0x0400 /* truncate to zero length */
#define O_EXCL 0x0800 /* error if already exists */
/*
* Constants used for fcntl(2)
*/
/* command values */
#define F_DUPFD 0 /* duplicate file descriptor */
#define F_GETFD 1 /* get file descriptor flags */
#define F_SETFD 2 /* set file descriptor flags */
#define F_GETFL 3 /* get file status flags */
#define F_SETFL 4 /* set file status flags */
#define F_GETOWN 5 /* get SIGIO/SIGURG proc/pgrp */
#define F_SETOWN 6 /* set SIGIO/SIGURG proc/pgrp */
#define F_DUPFD 0 /* duplicate file descriptor */
#define F_GETFD 1 /* get file descriptor flags */
#define F_SETFD 2 /* set file descriptor flags */
#define F_GETFL 3 /* get file status flags */
#define F_SETFL 4 /* set file status flags */
#define F_GETOWN 5 /* get SIGIO/SIGURG proc/pgrp */
#define F_SETOWN 6 /* set SIGIO/SIGURG proc/pgrp */
/* file descriptor flags (F_GETFD, F_SETFD) */
#define FD_CLOEXEC 1 /* close-on-exec flag */
#define FD_CLOEXEC 1 /* close-on-exec flag */
/* lock operations for flock() */
#define LOCK_SH 1 /* shared file lock */
#define LOCK_EX 2 /* exclusive file lock */
#define LOCK_NB 4 /* don't block when locking */
#define LOCK_UN 8 /* unlock file */
#define LOCK_SH 1 /* shared file lock */
#define LOCK_EX 2 /* exclusive file lock */
#define LOCK_NB 4 /* don't block when locking */
#define LOCK_UN 8 /* unlock file */

View File

@@ -3,74 +3,74 @@
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
#ifndef NSIG
#ifndef NSIG
#define NSIG 32
#define NSIG 32
#define SIGHUP 1 /* hangup */
#define SIGINT 2 /* interrupt */
#define SIGQUIT 3 /* quit */
#define SIGILL 4 /* illegal instruction (not reset when caught) */
#define SIGTRAP 5 /* trace trap (not reset when caught) */
#define SIGIOT 6 /* IOT instruction */
#define SIGABRT SIGIOT /* compatibility */
#define SIGEMT 7 /* EMT instruction */
#define SIGFPE 8 /* floating point exception */
#define SIGKILL 9 /* kill (cannot be caught or ignored) */
#define SIGBUS 10 /* bus error */
#define SIGSEGV 11 /* segmentation violation */
#define SIGSYS 12 /* bad argument to system call */
#define SIGPIPE 13 /* write on a pipe with no one to read it */
#define SIGALRM 14 /* alarm clock */
#define SIGTERM 15 /* software termination signal from kill */
#define SIGURG 16 /* urgent condition on IO channel */
#define SIGSTOP 17 /* sendable stop signal not from tty */
#define SIGTSTP 18 /* stop signal from tty */
#define SIGCONT 19 /* continue a stopped process */
#define SIGCHLD 20 /* to parent on child stop or exit */
#define SIGCLD SIGCHLD /* compatibility */
#define SIGTTIN 21 /* to readers pgrp upon background tty read */
#define SIGTTOU 22 /* like TTIN for output if (tp->t_local&LTOSTOP) */
#define SIGIO 23 /* input/output possible signal */
#define SIGXCPU 24 /* exceeded CPU time limit */
#define SIGXFSZ 25 /* exceeded file size limit */
#define SIGVTALRM 26 /* virtual time alarm */
#define SIGPROF 27 /* profiling time alarm */
#define SIGWINCH 28 /* window size changes */
#define SIGUSR1 30 /* user defined signal 1 */
#define SIGUSR2 31 /* user defined signal 2 */
#define SIGHUP 1 /* hangup */
#define SIGINT 2 /* interrupt */
#define SIGQUIT 3 /* quit */
#define SIGILL 4 /* illegal instruction (not reset when caught) */
#define SIGTRAP 5 /* trace trap (not reset when caught) */
#define SIGIOT 6 /* IOT instruction */
#define SIGABRT SIGIOT /* compatibility */
#define SIGEMT 7 /* EMT instruction */
#define SIGFPE 8 /* floating point exception */
#define SIGKILL 9 /* kill (cannot be caught or ignored) */
#define SIGBUS 10 /* bus error */
#define SIGSEGV 11 /* segmentation violation */
#define SIGSYS 12 /* bad argument to system call */
#define SIGPIPE 13 /* write on a pipe with no one to read it */
#define SIGALRM 14 /* alarm clock */
#define SIGTERM 15 /* software termination signal from kill */
#define SIGURG 16 /* urgent condition on IO channel */
#define SIGSTOP 17 /* sendable stop signal not from tty */
#define SIGTSTP 18 /* stop signal from tty */
#define SIGCONT 19 /* continue a stopped process */
#define SIGCHLD 20 /* to parent on child stop or exit */
#define SIGCLD SIGCHLD /* compatibility */
#define SIGTTIN 21 /* to readers pgrp upon background tty read */
#define SIGTTOU 22 /* like TTIN for output if (tp->t_local&LTOSTOP) */
#define SIGIO 23 /* input/output possible signal */
#define SIGXCPU 24 /* exceeded CPU time limit */
#define SIGXFSZ 25 /* exceeded file size limit */
#define SIGVTALRM 26 /* virtual time alarm */
#define SIGPROF 27 /* profiling time alarm */
#define SIGWINCH 28 /* window size changes */
#define SIGUSR1 30 /* user defined signal 1 */
#define SIGUSR2 31 /* user defined signal 2 */
#define SIG_ERR -1
#define SIG_DFL 0
#define SIG_IGN 1
#define BADSIG SIG_ERR
#define SIG_ERR -1
#define SIG_DFL 0
#define SIG_IGN 1
#define BADSIG SIG_ERR
#define SA_ONSTACK 0x0001 /* take signal on signal stack */
#define SA_RESTART 0x0002 /* restart system on signal return */
#define SA_DISABLE 0x0004 /* disable taking signals on alternate stack */
#define SA_NOCLDSTOP 0x0008 /* do not generate SIGCHLD on child stop */
#define SA_ONSTACK 0x0001 /* take signal on signal stack */
#define SA_RESTART 0x0002 /* restart system on signal return */
#define SA_DISABLE 0x0004 /* disable taking signals on alternate stack */
#define SA_NOCLDSTOP 0x0008 /* do not generate SIGCHLD on child stop */
/*
* Flags for sigprocmask:
*/
#define SIG_BLOCK 1 /* block specified signal set */
#define SIG_UNBLOCK 2 /* unblock specified signal set */
#define SIG_SETMASK 3 /* set specified signal set */
#define SIG_BLOCK 1 /* block specified signal set */
#define SIG_UNBLOCK 2 /* unblock specified signal set */
#define SIG_SETMASK 3 /* set specified signal set */
#define MINSIGSTKSZ 128 /* minimum allowable stack */
#define SIGSTKSZ (MINSIGSTKSZ + 384) /* recommended stack size */
#define MINSIGSTKSZ 128 /* minimum allowable stack */
#define SIGSTKSZ (MINSIGSTKSZ + 384) /* recommended stack size */
#define SV_ONSTACK SA_ONSTACK /* take signal on signal stack */
#define SV_INTERRUPT SA_RESTART /* same bit, opposite sense */
#define SV_ONSTACK SA_ONSTACK /* take signal on signal stack */
#define SV_INTERRUPT SA_RESTART /* same bit, opposite sense */
/*
* Macro for converting signal number to a mask suitable for
* sigblock().
*/
#define sigmask(m) (1L << ((m)-1))
#define sigaddset(set, signo) (*(set) |= 1L << ((signo) - 1), 0)
#define sigdelset(set, signo) (*(set) &= ~(1L << ((signo) - 1)), 0)
#define sigemptyset(set) (*(set) = (sigset_t)0, (int)0)
#define sigmask(m) (1L << ((m)-1))
#define sigaddset(set, signo) (*(set) |= 1L << ((signo) - 1), 0)
#define sigdelset(set, signo) (*(set) &= ~(1L << ((signo) - 1)), 0)
#define sigemptyset(set) (*(set) = (sigset_t)0, (int)0)
#define sigfillset(set) (*(set) = ~(sigset_t)0, (int)0)
#define sigismember(set, signo) ((*(set) & (1L << ((signo) - 1))) != 0)

View File

@@ -1,24 +1,24 @@
/*
* SmallC: interface to stdio library.
*/
#define BUFSIZ 1024
#define BUFSIZ 1024
#ifndef NULL
#define NULL 0
#ifndef NULL
#define NULL 0
#endif
#define FILE int
#define EOF (-1)
#define FILE int
#define EOF (-1)
extern int _iob[];
#define stdin (&_iob[0])
#define stdout (&_iob[5])
#define stderr (&_iob[10])
#define stdin (&_iob[0])
#define stdout (&_iob[5])
#define stderr (&_iob[10])
#define SEEK_SET 0 /* set file offset to offset */
#define SEEK_CUR 1 /* set file offset to current plus offset */
#define SEEK_END 2 /* set file offset to EOF plus offset */
#define SEEK_SET 0 /* set file offset to offset */
#define SEEK_CUR 1 /* set file offset to current plus offset */
#define SEEK_END 2 /* set file offset to EOF plus offset */
#define getc fgetc
#define putc fputc

View File

@@ -1,22 +1,22 @@
/*
* Ioctl definitions for GPIO driver.
*/
#define GPIO_PORT(n) (n) /* port number */
#define GPIO_PORTA 0
#define GPIO_PORTB 1
#define GPIO_PORTC 2
#define GPIO_PORTD 3
#define GPIO_PORTE 4
#define GPIO_PORTF 5
#define GPIO_PORTG 6
#define GPIO_PORT(n) (n) /* port number */
#define GPIO_PORTA 0
#define GPIO_PORTB 1
#define GPIO_PORTC 2
#define GPIO_PORTD 3
#define GPIO_PORTE 4
#define GPIO_PORTF 5
#define GPIO_PORTG 6
#define GPIO_CONFIN 0x20016700 /* configure as input */
#define GPIO_CONFIN 0x20016700 /* configure as input */
#define GPIO_CONFOUT 0x20026700 /* configure as output */
#define GPIO_CONFOD 0x20046700 /* configure as open drain */
#define GPIO_DECONF 0x20086700 /* deconfigure */
#define GPIO_STORE 0x20106700 /* store all outputs */
#define GPIO_SET 0x20206700 /* set to 1 by mask */
#define GPIO_CLEAR 0x20406700 /* set to 0 by mask */
#define GPIO_INVERT 0x20806700 /* invert by mask */
#define GPIO_POLL 0x21006700 /* poll */
#define GPIO_LOL 0x82006700 /* display lol picture */
#define GPIO_CONFOD 0x20046700 /* configure as open drain */
#define GPIO_DECONF 0x20086700 /* deconfigure */
#define GPIO_STORE 0x20106700 /* store all outputs */
#define GPIO_SET 0x20206700 /* set to 1 by mask */
#define GPIO_CLEAR 0x20406700 /* set to 0 by mask */
#define GPIO_INVERT 0x20806700 /* invert by mask */
#define GPIO_POLL 0x21006700 /* poll */
#define GPIO_LOL 0x82006700 /* display lol picture */

View File

@@ -1,42 +0,0 @@
/*
* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* @(#)stab.h 5.1 (Berkeley) 5/30/85
*/
/* IF YOU ADD DEFINITIONS, ADD THEM TO nm.c as well */
/*
* This file gives definitions supplementing <a.out.h>
* for permanent symbol table entries.
* These must have one of the N_STAB bits on,
* and are subject to relocation according to the masks in <a.out.h>.
*/
/*
* for symbolic debugger, sdb(1):
*/
#define N_GSYM 0x20 /* global symbol: name,,0,type,0 */
#define N_FNAME 0x22 /* procedure name (f77 kludge): name,,0 */
#define N_FUN 0x24 /* procedure: name,,0,linenumber,address */
#define N_STSYM 0x26 /* static symbol: name,,0,type,address */
#define N_LCSYM 0x28 /* .lcomm symbol: name,,0,type,address */
#define N_RSYM 0x40 /* register sym: name,,0,type,register */
#define N_SLINE 0x44 /* src line: 0,,0,linenumber,address */
#define N_SSYM 0x60 /* structure elt: name,,0,type,struct_offset */
#define N_SO 0x64 /* source file name: name,,0,0,address */
#define N_LSYM 0x80 /* local sym: name,,0,type,offset */
#define N_SOL 0x84 /* #included file name: name,,0,0,address */
#define N_PSYM 0xa0 /* parameter: name,,0,type,offset */
#define N_ENTRY 0xa4 /* alternate entry: name,linenumber,address */
#define N_LBRAC 0xc0 /* left bracket: 0,,0,nesting level,address */
#define N_RBRAC 0xe0 /* right bracket: 0,,0,nesting level,address */
#define N_BCOMM 0xe2 /* begin common: name,, */
#define N_ECOMM 0xe4 /* end common: name,, */
#define N_ECOML 0xe8 /* end common (local name): ,,address */
#define N_LENG 0xfe /* second stab entry with length information */
/*
* for the berkeley pascal compiler, pc(1):
*/
#define N_PC 0x30 /* global pascal symbol: name,,0,subtype,line */

View File

@@ -8,7 +8,7 @@
* Define va_start, va_arg, va_end, va_copy.
*/
#if defined(__GNUC__) /* Gnu C */
# define va_start(ap, last) __builtin_va_start((ap), last)
# define va_start(ap, last) __builtin_va_start((ap), last)
# define va_arg(ap, type) __builtin_va_arg((ap), type)
# define va_end(ap) __builtin_va_end((ap))
# define va_copy(dest, src) __builtin_va_copy((dest), (src))

View File

@@ -1,8 +1,22 @@
#ifndef _STDDEF_H_
#define _STDDEF_H_
typedef int ptrdiff_t;
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned size_t;
#endif
#ifndef NULL
#define NULL 0
#endif
/* Offset of member MEMBER in a struct of type TYPE. */
#if defined(__GNUC__) && __GNUC__ > 3
#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
#else
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER)
#endif
#endif /* _STDDEF_H_ */

View File

@@ -2,14 +2,12 @@
#ifndef _STDINT_H
#define _STDINT_H
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
#endif

View File

@@ -5,27 +5,25 @@
*/
#ifndef FILE
#include <sys/types.h>
#define BUFSIZ 1024
extern struct _iobuf {
int _cnt;
char *_ptr; /* should be unsigned char */
char *_base; /* ditto */
int _bufsiz;
short _flag;
short _file;
#define BUFSIZ 1024
extern struct _iobuf {
int _cnt;
char *_ptr; /* should be unsigned char */
char *_base; /* ditto */
int _bufsiz;
short _flag;
short _file;
} _iob[];
#define _IOREAD 01
#define _IOWRT 02
#define _IONBF 04
#define _IOMYBUF 010
#define _IOEOF 020
#define _IOERR 040
#define _IOSTRG 0100
#define _IOLBF 0200
#define _IORW 0400
#define _IOREAD 01
#define _IOWRT 02
#define _IONBF 04
#define _IOMYBUF 010
#define _IOEOF 020
#define _IOERR 040
#define _IOSTRG 0100
#define _IOLBF 0200
#define _IORW 0400
/*
* The following definition is for ANSI C, which took them
@@ -33,58 +31,63 @@ extern struct _iobuf {
* made them official arguments to setvbuf(), without renaming them.
* Hence, these ugly _IOxxx names are *supposed* to appear in user code.
*/
#define _IOFBF 0 /* setvbuf should set fully buffered */
/* _IONBF and _IOLBF are used from the flags above */
#define _IOFBF 0 /* setvbuf should set fully buffered */
/* _IONBF and _IOLBF are used from the flags above */
#ifndef NULL
#define NULL 0
#ifndef NULL
#define NULL 0
#endif
#define FILE struct _iobuf
#define EOF (-1)
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned size_t;
#endif
#define stdin (&_iob[0])
#define stdout (&_iob[1])
#define stderr (&_iob[2])
#define FILE struct _iobuf
#define EOF (-1)
#define SEEK_SET 0 /* set file offset to offset */
#define SEEK_CUR 1 /* set file offset to current plus offset */
#define SEEK_END 2 /* set file offset to EOF plus offset */
#define stdin (&_iob[0])
#define stdout (&_iob[1])
#define stderr (&_iob[2])
#define SEEK_SET 0 /* set file offset to offset */
#define SEEK_CUR 1 /* set file offset to current plus offset */
#define SEEK_END 2 /* set file offset to EOF plus offset */
#ifndef lint
#define getc(p) (--(p)->_cnt>=0? (int)(*(unsigned char *)(p)->_ptr++):_filbuf(p))
#define putc(x, p) (--(p)->_cnt >= 0 ?\
(int)(*(unsigned char *)(p)->_ptr++ = (x)) :\
(((p)->_flag & _IOLBF) && -(p)->_cnt < (p)->_bufsiz ?\
((*(p)->_ptr = (x)) != '\n' ?\
(int)(*(unsigned char *)(p)->_ptr++) :\
_flsbuf(*(unsigned char *)(p)->_ptr, p)) :\
_flsbuf((unsigned char)(x), p)))
#define getc(p) (--(p)->_cnt>=0? (int)(*(unsigned char *)(p)->_ptr++):_filbuf(p))
#define putc(x, p) (--(p)->_cnt >= 0 ?\
(int)(*(unsigned char *)(p)->_ptr++ = (x)) :\
(((p)->_flag & _IOLBF) && -(p)->_cnt < (p)->_bufsiz ?\
((*(p)->_ptr = (x)) != '\n' ?\
(int)(*(unsigned char *)(p)->_ptr++) :\
_flsbuf(*(unsigned char *)(p)->_ptr, p)) :\
_flsbuf((unsigned char)(x), p)))
#endif /* not lint */
#define getchar() getc(stdin)
#define putchar(x) putc(x,stdout)
#define feof(p) (((p)->_flag&_IOEOF)!=0)
#define ferror(p) (((p)->_flag&_IOERR)!=0)
#define fileno(p) ((p)->_file)
#define clearerr(p) ((p)->_flag &= ~(_IOERR|_IOEOF))
#define getchar() getc(stdin)
#define putchar(x) putc(x,stdout)
#define feof(p) (((p)->_flag&_IOEOF)!=0)
#define ferror(p) (((p)->_flag&_IOERR)!=0)
#define fileno(p) ((p)->_file)
#define clearerr(p) ((p)->_flag &= ~(_IOERR|_IOEOF))
FILE *fopen (const char *, const char *);
FILE *fdopen (int, const char *);
FILE *freopen (const char *, const char *, FILE *);
FILE *popen (const char *, const char *);
FILE *fopen (const char *, const char *);
FILE *fdopen (int, const char *);
FILE *freopen (const char *, const char *, FILE *);
FILE *popen (const char *, const char *);
FILE *tmpfile (void);
int fclose (FILE *);
long ftell (FILE *);
long ftell (FILE *);
int fflush (FILE *);
int fgetc (FILE *);
int ungetc (int, FILE *);
int fputc (int, FILE *);
int fputs (const char *, FILE *);
int puts (const char *);
char *fgets (char *, int, FILE *);
char *gets (char *);
FILE *_findiop (void);
int fputc (int, FILE *);
int fputs (const char *, FILE *);
int puts (const char *);
char *fgets (char *, int, FILE *);
char *gets (char *);
FILE *_findiop (void);
int _filbuf (FILE *);
int _flsbuf (unsigned char, FILE *);
void setbuf (FILE *, char *);
@@ -97,17 +100,17 @@ int remove (const char *);
int getw(FILE *stream);
int putw(int w, FILE *stream);
size_t fread (void *, size_t, size_t, FILE *);
size_t fwrite (const void *, size_t, size_t, FILE *);
size_t fread (void *, size_t, size_t, FILE *);
size_t fwrite (const void *, size_t, size_t, FILE *);
int fprintf (FILE *, const char *, ...);
int printf (const char *, ...);
int sprintf (char *, const char *, ...);
int snprintf (char *, size_t, const char *, ...);
int fprintf (FILE *, const char *, ...);
int printf (const char *, ...);
int sprintf (char *, const char *, ...);
int snprintf (char *, size_t, const char *, ...);
int fscanf (FILE *, const char *, ...);
int scanf (const char *, ...);
int sscanf (const char *, const char *, ...);
int fscanf (FILE *, const char *, ...);
int scanf (const char *, ...);
int sscanf (const char *, const char *, ...);
#ifndef _VA_LIST_
# ifdef __GNUC__
@@ -118,17 +121,17 @@ int sscanf (const char *, const char *, ...);
# endif
#endif
int vfprintf (FILE *, const char *, va_list);
int vprintf (const char *, va_list);
int vsprintf (char *, const char *, va_list);
int vsnprintf (char *, size_t, const char *, va_list);
int vfprintf (FILE *, const char *, va_list);
int vprintf (const char *, va_list);
int vsprintf (char *, const char *, va_list);
int vsnprintf (char *, size_t, const char *, va_list);
int vfscanf (FILE *, const char *, va_list);
int vscanf (const char *, va_list);
int vsscanf (const char *, const char *, va_list);
int vfscanf (FILE *, const char *, va_list);
int vscanf (const char *, va_list);
int vsscanf (const char *, const char *, va_list);
int _doprnt (const char *, va_list, FILE *);
int _doscan (FILE *, const char *, va_list);
int _doprnt (const char *, va_list, FILE *);
int _doscan (FILE *, const char *, va_list);
#ifndef _VA_LIST_
# undef va_list

View File

@@ -1,6 +1,6 @@
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)stdlib.h 8.3.2 (2.11BSD) 1996/1/12
* @(#)stdlib.h 8.3.2 (2.11BSD) 1996/1/12
*
* Adapted from the 4.4-Lite CD. The odds of a ANSI C compiler for 2.11BSD
* being slipped under the door are not distinguishable from 0 - so the
@@ -43,59 +43,62 @@
#ifndef _STDLIB_H_
#define _STDLIB_H_
#include <sys/types.h>
#ifndef NULL
#define NULL 0
#define NULL 0
#endif
#define EXIT_FAILURE 1
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
#define EXIT_SUCCESS 0
#define RAND_MAX 0x7fff
#define RAND_MAX 0x7fff
void abort (void);
int abs (int);
int atexit (void (*)(void));
int atoi (const char *);
long atol (const char *);
void *calloc (size_t, size_t);
void exit (int);
void free (void *);
char *getenv (const char *);
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned size_t;
#endif
void abort (void);
int abs (int);
int atexit (void (*)(void));
int atoi (const char *);
long atol (const char *);
void *calloc (size_t, size_t);
void exit (int);
void free (void *);
char *getenv (const char *);
long labs (long);
void *malloc (size_t);
char *mktemp (char *);
void *malloc (size_t);
char *mktemp (char *);
int mkstemp (char *);
void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
int rand (void);
void *realloc (void*, size_t);
void srand (unsigned);
long strtol (const char *, char **, int);
void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
int rand (void);
void *realloc (void*, size_t);
void srand (unsigned);
long strtol (const char *, char **, int);
unsigned long strtoul (const char *, char **, int);
int system (const char *);
int system (const char *);
int putenv (char *string);
int setenv (const char *name, const char *value, int overwrite);
int unsetenv (const char *name);
char *_findenv (const char *name, int *offset);
char *_findenv (const char *name, int *offset);
void *alloca (size_t size);
void *alloca (size_t size);
int daemon (int, int);
char *devname (dev_t dev, mode_t type);
int getloadavg (unsigned loadavg[], int nelem);
int daemon (int, int);
char *devname (int dev, int type);
int getloadavg (unsigned loadavg[], int nelem);
extern char *suboptarg; /* getsubopt(3) external variable */
int getsubopt (char **, char **, char **);
extern char *suboptarg; /* getsubopt(3) external variable */
int getsubopt (char **, char **, char **);
long random (void);
char *setstate (char *);
void srandom (unsigned);
long random (void);
char *setstate (char *);
void srandom (unsigned);
#ifndef __SMALLER_C__
double atof (const char *);
double strtod (const char *, char **);
double atof (const char *);
double strtod (const char *, char **);
char *ecvt (double, int, int *, int *);
char *fcvt (double, int, int *, int *);
char *gcvt (double, int, char *);

View File

@@ -3,41 +3,44 @@
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
#include <sys/types.h>
#ifndef NULL
#define NULL 0
#ifndef NULL
#define NULL 0
#endif
char *strcat (char *, const char *);
char *strncat (char *, const char *, size_t);
char *strcpy (char *, const char *);
char *strncpy (char *, const char *, size_t);
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned size_t;
#endif
char *strstr (const char *, const char *);
char *strcat (char *, const char *);
char *strncat (char *, const char *, size_t);
char *strcpy (char *, const char *);
char *strncpy (char *, const char *, size_t);
int strcmp (const char *, const char *);
int strncmp (const char *, const char *, size_t);
size_t strlen (const char *);
char *strstr (const char *, const char *);
int memcmp (const void *, const void *, size_t);
int strcmp (const char *, const char *);
int strncmp (const char *, const char *, size_t);
size_t strlen (const char *);
int memcmp (const void *, const void *, size_t);
void *memmove (void *, const void *, size_t);
void *memccpy (void *, const void *, int, size_t);
void *memchr (const void *, int, size_t);
void *memcpy (void *, const void *, size_t);
void *memset (void *, int, size_t);
char *strchr (const char *, int);
void *memccpy (void *, const void *, int, size_t);
void *memchr (const void *, int, size_t);
void *memcpy (void *, const void *, size_t);
void *memset (void *, int, size_t);
char *strchr (const char *, int);
char *strdup (const char *);
char *strpbrk (const char *, const char *);
char *strrchr (const char *, int);
char *strsep (char **, const char *);
char *strtok (char *, const char *);
char *strtok_r (char *, const char *, char **);
char *strdup (const char *);
char *strpbrk (const char *, const char *);
char *strrchr (const char *, int);
char *strsep (char **, const char *);
char *strtok (char *, const char *);
char *strtok_r (char *, const char *, char **);
size_t strcspn (const char *, const char *);
size_t strspn (const char *, const char *);
size_t strcspn (const char *, const char *);
size_t strspn (const char *, const char *);
char *strerror (int);
const char *syserrlst (int);

View File

@@ -1,6 +1,6 @@
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
@@ -30,7 +30,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/types.h>
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned size_t;
#endif
int bcmp(const void *, const void *, size_t);
void bcopy(const void *, void *, size_t);

View File

@@ -1,9 +1,9 @@
/* struct.h 4.1 83/05/03 */
/* struct.h 4.1 83/05/03 */
/*
* access to information relating to the fields of a structure
*/
#define fldoff(str, fld) ((int)&(((struct str *)0)->fld))
#define fldsiz(str, fld) (sizeof(((struct str *)0)->fld))
#define strbase(str, ptr, fld) ((struct str *)((char *)(ptr)-fldoff(str, fld)))
#define fldoff(str, fld) ((int)&(((struct str *)0)->fld))
#define fldsiz(str, fld) (sizeof(((struct str *)0)->fld))
#define strbase(str, ptr, fld) ((struct str *)((char *)(ptr)-fldoff(str, fld)))

View File

@@ -9,168 +9,168 @@
* causes cpp to leave a trailing tab when expanding macros in pdp/sys/SYS.h
*/
#define SYS_exit 1
#define SYS_fork 2
#define SYS_read 3
#define SYS_write 4
#define SYS_open 5
#define SYS_close 6
#define SYS_wait4 7
/* 8 is old; creat */
#define SYS_link 9
#define SYS_unlink 10
#define SYS_execv 11
#define SYS_chdir 12
#define SYS_fchdir 13
#define SYS_mknod 14
#define SYS_chmod 15
#define SYS_chown 16
#define SYS_chflags 17
#define SYS_fchflags 18
#define SYS_lseek 19
#define SYS_getpid 20
#define SYS_mount 21
#define SYS_umount 22
#define SYS___sysctl 23
#define SYS_getuid 24
#define SYS_geteuid 25
#define SYS_ptrace 26
#define SYS_getppid 27
#define SYS_statfs 28
#define SYS_fstatfs 29
#define SYS_getfsstat 30
#define SYS_sigaction 31
#define SYS_sigprocmask 32
#define SYS_access 33
#define SYS_sigpending 34
#define SYS_sigaltstack 35
#define SYS_sync 36
#define SYS_kill 37
#define SYS_stat 38
/* 39 was getlogin */
#define SYS_lstat 40
#define SYS_dup 41
#define SYS_pipe 42
/* 43 was setlogin */
#define SYS_profil 44
#define SYS_setuid 45
#define SYS_seteuid 46
#define SYS_getgid 47
#define SYS_getegid 48
#define SYS_setgid 49
#define SYS_setegid 50
#define SYS_exit 1
#define SYS_fork 2
#define SYS_read 3
#define SYS_write 4
#define SYS_open 5
#define SYS_close 6
#define SYS_wait4 7
/* 8 is old; creat */
#define SYS_link 9
#define SYS_unlink 10
#define SYS_execv 11
#define SYS_chdir 12
#define SYS_fchdir 13
#define SYS_mknod 14
#define SYS_chmod 15
#define SYS_chown 16
#define SYS_chflags 17
#define SYS_fchflags 18
#define SYS_lseek 19
#define SYS_getpid 20
#define SYS_mount 21
#define SYS_umount 22
#define SYS___sysctl 23
#define SYS_getuid 24
#define SYS_geteuid 25
#define SYS_ptrace 26
#define SYS_getppid 27
#define SYS_statfs 28
#define SYS_fstatfs 29
#define SYS_getfsstat 30
#define SYS_sigaction 31
#define SYS_sigprocmask 32
#define SYS_access 33
#define SYS_sigpending 34
#define SYS_sigaltstack 35
#define SYS_sync 36
#define SYS_kill 37
#define SYS_stat 38
/* 39 was getlogin */
#define SYS_lstat 40
#define SYS_dup 41
#define SYS_pipe 42
/* 43 was setlogin */
#define SYS_profil 44
#define SYS_setuid 45
#define SYS_seteuid 46
#define SYS_getgid 47
#define SYS_getegid 48
#define SYS_setgid 49
#define SYS_setegid 50
#define SYS_kmemdev 51
#define SYS_phys 52
#define SYS_lock 53
#define SYS_ioctl 54
#define SYS_reboot 55
#define SYS_sigwait 56
#define SYS_symlink 57
#define SYS_readlink 58
#define SYS_execve 59
#define SYS_umask 60
#define SYS_chroot 61
#define SYS_fstat 62
/* 63 is unused */
/* 64 is old; getpagesize */
#define SYS_pselect 65
#define SYS_vfork 2 /* 66 - not fixed yet */
/* 67 is old; vread */
/* 68 is old; vwrite */
#define SYS_sbrk 69
#define SYS_rdglob 70
#define SYS_wrglob 71
/* 71 is unused 4.3: mmap */
#define SYS_msec 72 /* 72 is unused 4.3: vadvise */
/* 73 is unused 4.3: munmap */
/* 74 is unused 4.3: mprotect */
/* 75 is unused 4.3: madvise */
#define SYS_vhangup 76
/* 77 is old; vlimit */
/* 78 is unused 4.3: mincore */
#define SYS_getgroups 79
#define SYS_setgroups 80
#define SYS_getpgrp 81
#define SYS_setpgrp 82
#define SYS_setitimer 83
/* 84 is old; wait,wait3 */
#define SYS_swapon 85
#define SYS_getitimer 86
/* 87 is old; gethostname */
/* 88 is old; sethostname */
#define SYS_getdtablesize 89
#define SYS_dup2 90
/* 91 is unused 4.3: getdopt */
#define SYS_fcntl 92
#define SYS_select 93
/* 94 is unused 4.3: setdopt */
#define SYS_fsync 95
#define SYS_setpriority 96
#define SYS_socket 97
#define SYS_connect 98
#define SYS_accept 99
#define SYS_getpriority 100
#define SYS_send 101
#define SYS_recv 102
#define SYS_sigreturn 103
#define SYS_bind 104
#define SYS_setsockopt 105
#define SYS_listen 106
#define SYS_sigsuspend 107
#define SYS_phys 52
#define SYS_lock 53
#define SYS_ioctl 54
#define SYS_reboot 55
#define SYS_sigwait 56
#define SYS_symlink 57
#define SYS_readlink 58
#define SYS_execve 59
#define SYS_umask 60
#define SYS_chroot 61
#define SYS_fstat 62
/* 63 is unused */
/* 64 is old; getpagesize */
#define SYS_pselect 65
#define SYS_vfork 2 /* 66 - not fixed yet */
/* 67 is old; vread */
/* 68 is old; vwrite */
#define SYS_sbrk 69
#define SYS_rdglob 70
#define SYS_wrglob 71
/* 71 is unused 4.3: mmap */
#define SYS_msec 72 /* 72 is unused 4.3: vadvise */
/* 73 is unused 4.3: munmap */
/* 74 is unused 4.3: mprotect */
/* 75 is unused 4.3: madvise */
#define SYS_vhangup 76
/* 77 is old; vlimit */
/* 78 is unused 4.3: mincore */
#define SYS_getgroups 79
#define SYS_setgroups 80
#define SYS_getpgrp 81
#define SYS_setpgrp 82
#define SYS_setitimer 83
/* 84 is old; wait,wait3 */
#define SYS_swapon 85
#define SYS_getitimer 86
/* 87 is old; gethostname */
/* 88 is old; sethostname */
#define SYS_getdtablesize 89
#define SYS_dup2 90
/* 91 is unused 4.3: getdopt */
#define SYS_fcntl 92
#define SYS_select 93
/* 94 is unused 4.3: setdopt */
#define SYS_fsync 95
#define SYS_setpriority 96
#define SYS_socket 97
#define SYS_connect 98
#define SYS_accept 99
#define SYS_getpriority 100
#define SYS_send 101
#define SYS_recv 102
#define SYS_sigreturn 103
#define SYS_bind 104
#define SYS_setsockopt 105
#define SYS_listen 106
#define SYS_sigsuspend 107
/*
* 108 thru 112 are 4.3BSD compatibility syscalls. sigstack has to remain
* defined because no replacement routine exists. Sigh.
*/
/* 108 is old; sigvec */
/* 109 is old; sigblock */
/* 110 is old; sigsetmask */
/* 111 is old; sigpause */
#define SYS_sigstack 112
/* 108 is old; sigvec */
/* 109 is old; sigblock */
/* 110 is old; sigsetmask */
/* 111 is old; sigpause */
#define SYS_sigstack 112
#define SYS_recvmsg 113
#define SYS_sendmsg 114
/* 115 is old; vtrace */
#define SYS_gettimeofday 116
#define SYS_getrusage 117
#define SYS_getsockopt 118
/* 119 is old; resuba */
#define SYS_readv 120
#define SYS_writev 121
#define SYS_settimeofday 122
#define SYS_fchown 123
#define SYS_fchmod 124
#define SYS_recvfrom 125
/* 126 is old; setreuid */
/* 127 is old; setregid */
#define SYS_rename 128
#define SYS_truncate 129
#define SYS_ftruncate 130
#define SYS_flock 131
/* 132 is unused */
#define SYS_sendto 133
#define SYS_shutdown 134
#define SYS_socketpair 135
#define SYS_mkdir 136
#define SYS_rmdir 137
#define SYS_utimes 138
/* 139 is unused */
#define SYS_adjtime 140
#define SYS_getpeername 141
/* 142 is old; gethostid */
/* 143 is old; sethostid */
#define SYS_getrlimit 144
#define SYS_setrlimit 145
#define SYS_killpg 146
/* 147 is unused */
#define SYS_setquota 148
#define SYS_quota 149
#define SYS_getsockname 150
#define SYS_recvmsg 113
#define SYS_sendmsg 114
/* 115 is old; vtrace */
#define SYS_gettimeofday 116
#define SYS_getrusage 117
#define SYS_getsockopt 118
/* 119 is old; resuba */
#define SYS_readv 120
#define SYS_writev 121
#define SYS_settimeofday 122
#define SYS_fchown 123
#define SYS_fchmod 124
#define SYS_recvfrom 125
/* 126 is old; setreuid */
/* 127 is old; setregid */
#define SYS_rename 128
#define SYS_truncate 129
#define SYS_ftruncate 130
#define SYS_flock 131
/* 132 is unused */
#define SYS_sendto 133
#define SYS_shutdown 134
#define SYS_socketpair 135
#define SYS_mkdir 136
#define SYS_rmdir 137
#define SYS_utimes 138
/* 139 is unused */
#define SYS_adjtime 140
#define SYS_getpeername 141
/* 142 is old; gethostid */
/* 143 is old; sethostid */
#define SYS_getrlimit 144
#define SYS_setrlimit 145
#define SYS_killpg 146
/* 147 is unused */
#define SYS_setquota 148
#define SYS_quota 149
#define SYS_getsockname 150
/*
* 2BSD special calls
*/
/* 151 is unused */
#define SYS_ustore 152
#define SYS_ufetch 153
#define SYS_ucall 154
/* 155 is unused */
/* 151 is unused */
#define SYS_ustore 152
#define SYS_ufetch 153
#define SYS_ucall 154
/* 155 is unused */

View File

@@ -9,89 +9,89 @@
* software without specific prior written permission. This software
* is provided ``as is'' without express or implied warranty.
*
* @(#)sysexits.h 4.4.1 (2.11BSD) 1996/11/29
* @(#)sysexits.h 4.4.1 (2.11BSD) 1996/11/29
*/
/*
** SYSEXITS.H -- Exit status codes for system programs.
**
** This include file attempts to categorize possible error
** exit statuses for system programs, notably delivermail
** and the Berkeley network.
** This include file attempts to categorize possible error
** exit statuses for system programs, notably delivermail
** and the Berkeley network.
**
** Error numbers begin at EX__BASE to reduce the possibility of
** clashing with other exit statuses that random programs may
** already return. The meaning of the codes is approximately
** as follows:
** Error numbers begin at EX__BASE to reduce the possibility of
** clashing with other exit statuses that random programs may
** already return. The meaning of the codes is approximately
** as follows:
**
** EX_USAGE -- The command was used incorrectly, e.g., with
** the wrong number of arguments, a bad flag, a bad
** syntax in a parameter, or whatever.
** EX_DATAERR -- The input data was incorrect in some way.
** This should only be used for user's data & not
** system files.
** EX_NOINPUT -- An input file (not a system file) did not
** exist or was not readable. This could also include
** errors like "No message" to a mailer (if it cared
** to catch it).
** EX_NOUSER -- The user specified did not exist. This might
** be used for mail addresses or remote logins.
** EX_NOHOST -- The host specified did not exist. This is used
** in mail addresses or network requests.
** EX_UNAVAILABLE -- A service is unavailable. This can occur
** if a support program or file does not exist. This
** can also be used as a catchall message when something
** you wanted to do doesn't work, but you don't know
** why.
** EX_SOFTWARE -- An internal software error has been detected.
** This should be limited to non-operating system related
** errors as possible.
** EX_OSERR -- An operating system error has been detected.
** This is intended to be used for such things as "cannot
** fork", "cannot create pipe", or the like. It includes
** things like getuid returning a user that does not
** exist in the passwd file.
** EX_OSFILE -- Some system file (e.g., /etc/passwd, /var/run/utmp,
** etc.) does not exist, cannot be opened, or has some
** sort of error (e.g., syntax error).
** EX_CANTCREAT -- A (user specified) output file cannot be
** created.
** EX_IOERR -- An error occurred while doing I/O on some file.
** EX_TEMPFAIL -- temporary failure, indicating something that
** is not really an error. In sendmail, this means
** that a mailer (e.g.) could not create a connection,
** and the request should be reattempted later.
** EX_PROTOCOL -- the remote system returned something that
** was "not possible" during a protocol exchange.
** EX_NOPERM -- You did not have sufficient permission to
** perform the operation. This is not intended for
** file system problems, which should use NOINPUT or
** CANTCREAT, but rather for higher level permissions.
** For example, kre uses this to restrict who students
** can send mail to.
** EX_USAGE -- The command was used incorrectly, e.g., with
** the wrong number of arguments, a bad flag, a bad
** syntax in a parameter, or whatever.
** EX_DATAERR -- The input data was incorrect in some way.
** This should only be used for user's data & not
** system files.
** EX_NOINPUT -- An input file (not a system file) did not
** exist or was not readable. This could also include
** errors like "No message" to a mailer (if it cared
** to catch it).
** EX_NOUSER -- The user specified did not exist. This might
** be used for mail addresses or remote logins.
** EX_NOHOST -- The host specified did not exist. This is used
** in mail addresses or network requests.
** EX_UNAVAILABLE -- A service is unavailable. This can occur
** if a support program or file does not exist. This
** can also be used as a catchall message when something
** you wanted to do doesn't work, but you don't know
** why.
** EX_SOFTWARE -- An internal software error has been detected.
** This should be limited to non-operating system related
** errors as possible.
** EX_OSERR -- An operating system error has been detected.
** This is intended to be used for such things as "cannot
** fork", "cannot create pipe", or the like. It includes
** things like getuid returning a user that does not
** exist in the passwd file.
** EX_OSFILE -- Some system file (e.g., /etc/passwd, /var/run/utmp,
** etc.) does not exist, cannot be opened, or has some
** sort of error (e.g., syntax error).
** EX_CANTCREAT -- A (user specified) output file cannot be
** created.
** EX_IOERR -- An error occurred while doing I/O on some file.
** EX_TEMPFAIL -- temporary failure, indicating something that
** is not really an error. In sendmail, this means
** that a mailer (e.g.) could not create a connection,
** and the request should be reattempted later.
** EX_PROTOCOL -- the remote system returned something that
** was "not possible" during a protocol exchange.
** EX_NOPERM -- You did not have sufficient permission to
** perform the operation. This is not intended for
** file system problems, which should use NOINPUT or
** CANTCREAT, but rather for higher level permissions.
** For example, kre uses this to restrict who students
** can send mail to.
**
** Maintained by Eric Allman (eric@berkeley, ucbvax!eric) --
** please mail changes to me.
** Maintained by Eric Allman (eric@berkeley, ucbvax!eric) --
** please mail changes to me.
**
** @(#)sysexits.h 4.4 3/24/88
** @(#)sysexits.h 4.4 3/24/88
*/
# define EX_OK 0 /* successful termination */
# define EX_OK 0 /* successful termination */
# define EX__BASE 64 /* base value for error messages */
# define EX__BASE 64 /* base value for error messages */
# define EX_USAGE 64 /* command line usage error */
# define EX_DATAERR 65 /* data format error */
# define EX_NOINPUT 66 /* cannot open input */
# define EX_NOUSER 67 /* addressee unknown */
# define EX_NOHOST 68 /* host name unknown */
# define EX_UNAVAILABLE 69 /* service unavailable */
# define EX_SOFTWARE 70 /* internal software error */
# define EX_OSERR 71 /* system error (e.g., can't fork) */
# define EX_OSFILE 72 /* critical OS file missing */
# define EX_CANTCREAT 73 /* can't create (user) output file */
# define EX_IOERR 74 /* input/output error */
# define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */
# define EX_PROTOCOL 76 /* remote error in protocol */
# define EX_NOPERM 77 /* permission denied */
# define EX_CONFIG 78 /* configuration error */
# define EX_USAGE 64 /* command line usage error */
# define EX_DATAERR 65 /* data format error */
# define EX_NOINPUT 66 /* cannot open input */
# define EX_NOUSER 67 /* addressee unknown */
# define EX_NOHOST 68 /* host name unknown */
# define EX_UNAVAILABLE 69 /* service unavailable */
# define EX_SOFTWARE 70 /* internal software error */
# define EX_OSERR 71 /* system error (e.g., can't fork) */
# define EX_OSFILE 72 /* critical OS file missing */
# define EX_CANTCREAT 73 /* can't create (user) output file */
# define EX_IOERR 74 /* input/output error */
# define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */
# define EX_PROTOCOL 76 /* remote error in protocol */
# define EX_NOPERM 77 /* permission denied */
# define EX_CONFIG 78 /* configuration error */

View File

@@ -1,8 +1,8 @@
/*
* tcl.h --
*
* This header file describes the externally-visible facilities
* of the Tcl interpreter.
* This header file describes the externally-visible facilities
* of the Tcl interpreter.
*
* Copyright 1987-1991 Regents of the University of California
* Permission to use, copy, modify, and distribute this
@@ -16,9 +16,9 @@
#ifndef _TCL
#define _TCL
#define TCL_VERSION "6.7"
#define TCL_MAJOR_VERSION 6
#define TCL_MINOR_VERSION 7
#define TCL_VERSION "6.7"
#define TCL_MAJOR_VERSION 6
#define TCL_MINOR_VERSION 7
/*
* Data structures defined opaquely in this module. The definitions
@@ -28,17 +28,17 @@
* in the "real" definition in tclInt.h.
*/
typedef struct Tcl_Interp {
unsigned char *result; /* Points to result string returned by last
* command. */
unsigned char *result; /* Points to result string returned by last
* command. */
void (*freeProc) (unsigned char *blockPtr);
/* Zero means result is statically allocated.
* If non-zero, gives address of procedure
* to invoke to free the result. Must be
* freed by Tcl_Eval before executing next
* command. */
unsigned short errorLine; /* When TCL_ERROR is returned, this gives
* the line number within the command where
* the error occurred (1 means first line). */
/* Zero means result is statically allocated.
* If non-zero, gives address of procedure
* to invoke to free the result. Must be
* freed by Tcl_Eval before executing next
* command. */
unsigned short errorLine; /* When TCL_ERROR is returned, this gives
* the line number within the command where
* the error occurred (1 means first line). */
} Tcl_Interp;
typedef void *Tcl_Trace;
@@ -50,23 +50,23 @@ typedef void *Tcl_CmdBuf;
* the command procedure returns an integer value, which is one of the
* following:
*
* TCL_OK Command completed normally; interp->result contains
* the command's result.
* TCL_ERROR The command couldn't be completed successfully;
* interp->result describes what went wrong.
* TCL_RETURN The command requests that the current procedure
* return; interp->result contains the procedure's
* return value.
* TCL_BREAK The command requests that the innermost loop
* be exited; interp->result is meaningless.
* TCL_CONTINUE Go on to the next iteration of the current loop;
* interp->result is meaninless.
* TCL_OK Command completed normally; interp->result contains
* the command's result.
* TCL_ERROR The command couldn't be completed successfully;
* interp->result describes what went wrong.
* TCL_RETURN The command requests that the current procedure
* return; interp->result contains the procedure's
* return value.
* TCL_BREAK The command requests that the innermost loop
* be exited; interp->result is meaningless.
* TCL_CONTINUE Go on to the next iteration of the current loop;
* interp->result is meaninless.
*/
#define TCL_OK 0
#define TCL_ERROR 1
#define TCL_RETURN 2
#define TCL_BREAK 3
#define TCL_CONTINUE 4
#define TCL_OK 0
#define TCL_ERROR 1
#define TCL_RETURN 2
#define TCL_BREAK 3
#define TCL_CONTINUE 4
#define TCL_RESULT_SIZE 199
@@ -75,168 +75,168 @@ typedef void *Tcl_CmdBuf;
*/
typedef void (Tcl_CmdDeleteProc) (void *clientData);
typedef int (Tcl_CmdProc) (void *clientData,
Tcl_Interp *interp, int argc, unsigned char *argv[]);
Tcl_Interp *interp, int argc, unsigned char *argv[]);
typedef void (Tcl_CmdTraceProc) (void *clientData,
Tcl_Interp *interp, int level, unsigned char *command, Tcl_CmdProc *proc,
void *cmdClientData, int argc, unsigned char *argv[]);
Tcl_Interp *interp, int level, unsigned char *command, Tcl_CmdProc *proc,
void *cmdClientData, int argc, unsigned char *argv[]);
typedef void (Tcl_FreeProc) (unsigned char *blockPtr);
typedef unsigned char *(Tcl_VarTraceProc) (void *clientData,
Tcl_Interp *interp, unsigned char *part1, unsigned char *part2, int flags);
Tcl_Interp *interp, unsigned char *part1, unsigned char *part2, int flags);
/*
* Flag values passed to Tcl_Eval (see the man page for details; also
* see tclInt.h for additional flags that are only used internally by
* Tcl):
*/
#define TCL_BRACKET_TERM 1
#define TCL_BRACKET_TERM 1
/*
* Flag that may be passed to Tcl_ConvertElement to force it not to
* output braces (careful! if you change this flag be sure to change
* the definitions at the front of tclUtil.c).
*/
#define TCL_DONT_USE_BRACES 1
#define TCL_DONT_USE_BRACES 1
/*
* Flag value passed to Tcl_RecordAndEval to request no evaluation
* (record only).
*/
#define TCL_NO_EVAL -1
#define TCL_NO_EVAL -1
/*
* Specil freeProc values that may be passed to Tcl_SetResult (see
* the man page for details):
*/
#define TCL_STATIC ((Tcl_FreeProc *) 0)
#define TCL_VOLATILE ((Tcl_FreeProc *) -1)
#define TCL_DYNAMIC ((Tcl_FreeProc *) -2)
#define TCL_STATIC ((Tcl_FreeProc *) 0)
#define TCL_VOLATILE ((Tcl_FreeProc *) -1)
#define TCL_DYNAMIC ((Tcl_FreeProc *) -2)
/*
* Flag values passed to variable-related procedures.
*/
#define TCL_GLOBAL_ONLY 1
#define TCL_APPEND_VALUE 2
#define TCL_LIST_ELEMENT 4
#define TCL_NO_SPACE 8
#define TCL_TRACE_READS 0x10
#define TCL_TRACE_WRITES 0x20
#define TCL_TRACE_UNSETS 0x40
#define TCL_TRACE_DESTROYED 0x80
#define TCL_INTERP_DESTROYED 0x100
#define TCL_LEAVE_ERR_MSG 0x200
#define TCL_GLOBAL_ONLY 1
#define TCL_APPEND_VALUE 2
#define TCL_LIST_ELEMENT 4
#define TCL_NO_SPACE 8
#define TCL_TRACE_READS 0x10
#define TCL_TRACE_WRITES 0x20
#define TCL_TRACE_UNSETS 0x40
#define TCL_TRACE_DESTROYED 0x80
#define TCL_INTERP_DESTROYED 0x100
#define TCL_LEAVE_ERR_MSG 0x200
/*
* Additional flag passed back to variable watchers. This flag must
* not overlap any of the TCL_TRACE_* flags defined above or the
* TRACE_* flags defined in tclInt.h.
*/
#define TCL_VARIABLE_UNDEFINED 8
#define TCL_VARIABLE_UNDEFINED 8
/*
* Exported Tcl procedures:
*/
extern void Tcl_AppendElement (Tcl_Interp *interp, unsigned char *string,
int noSep);
extern void Tcl_AppendResult (Tcl_Interp *interp, ...);
extern unsigned char * Tcl_AssembleCmd (Tcl_CmdBuf buffer, unsigned char *string);
extern void Tcl_AddErrorInfo (Tcl_Interp *interp, unsigned char *message);
extern char Tcl_Backslash (unsigned char *src, int *readPtr);
extern int Tcl_CommandComplete (unsigned char *cmd);
extern unsigned char * Tcl_Concat (int argc, unsigned char **argv);
extern int Tcl_ConvertElement (unsigned char *src, unsigned char *dst, int flags);
extern Tcl_CmdBuf Tcl_CreateCmdBuf (void);
extern void Tcl_CreateCommand (Tcl_Interp *interp, unsigned char *cmdName,
Tcl_CmdProc *proc, void *clientData,
Tcl_CmdDeleteProc *deleteProc);
extern Tcl_Interp * Tcl_CreateInterp (void);
extern int Tcl_CreatePipeline (Tcl_Interp *interp, int argc,
unsigned char **argv, int **pidArrayPtr,
int *inPipePtr, int *outPipePtr,
int *errFilePtr);
extern Tcl_Trace Tcl_CreateTrace (Tcl_Interp *interp,
int level, Tcl_CmdTraceProc *proc,
void *clientData);
extern void Tcl_DeleteCmdBuf (Tcl_CmdBuf buffer);
extern int Tcl_DeleteCommand (Tcl_Interp *interp,
unsigned char *cmdName);
extern void Tcl_DeleteInterp (Tcl_Interp *interp);
extern void Tcl_DeleteTrace (Tcl_Interp *interp,
Tcl_Trace trace);
extern void Tcl_DetachPids (int numPids, int *pidPtr);
extern unsigned char * Tcl_ErrnoId (void);
extern int Tcl_Eval (Tcl_Interp *interp, unsigned char *cmd,
int flags, unsigned char **termPtr);
extern int Tcl_EvalFile (Tcl_Interp *interp,
unsigned char *fileName);
extern int Tcl_ExprBoolean (Tcl_Interp *interp, unsigned char *string,
int *ptr);
extern int Tcl_ExprLong (Tcl_Interp *interp, unsigned char *string,
long *ptr);
extern int Tcl_ExprString (Tcl_Interp *interp, unsigned char *string);
extern int Tcl_Fork (void);
extern void Tcl_FreeResult (Tcl_Interp *interp);
extern int Tcl_GetBoolean (Tcl_Interp *interp,
unsigned char *string, int *boolPtr);
extern int Tcl_GetInt (Tcl_Interp *interp,
unsigned char *string, int *intPtr);
extern unsigned char * Tcl_GetVar (Tcl_Interp *interp,
unsigned char *varName, int flags);
extern unsigned char * Tcl_GetVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags);
extern int Tcl_GlobalEval (Tcl_Interp *interp,
unsigned char *command);
extern void Tcl_InitHistory (Tcl_Interp *interp);
extern void Tcl_InitMemory (Tcl_Interp *interp);
extern unsigned char * Tcl_Merge (int argc, unsigned char **argv);
extern unsigned char * Tcl_ParseVar (Tcl_Interp *interp,
unsigned char *string, unsigned char **termPtr);
extern int Tcl_RecordAndEval (Tcl_Interp *interp,
unsigned char *cmd, int flags);
extern void Tcl_ResetResult (Tcl_Interp *interp);
extern int Tcl_ScanElement (unsigned char *string,
int *flagPtr);
extern void Tcl_SetErrorCode (Tcl_Interp *interp, ...);
extern void Tcl_SetResult (Tcl_Interp *interp,
unsigned char *string, Tcl_FreeProc *freeProc);
extern unsigned char * Tcl_SetVar (Tcl_Interp *interp,
unsigned char *varName, unsigned char *newValue, int flags);
extern unsigned char * Tcl_SetVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2,
unsigned char *newValue, int flags);
extern unsigned char * Tcl_SignalId (int sig);
extern unsigned char * Tcl_SignalMsg (int sig);
extern int Tcl_SplitList (Tcl_Interp *interp,
unsigned char *list, int *argcPtr, unsigned char ***argvPtr);
extern int Tcl_StringMatch (unsigned char *string,
unsigned char *pattern);
extern unsigned char * Tcl_TildeSubst (Tcl_Interp *interp,
unsigned char *name);
extern int Tcl_TraceVar (Tcl_Interp *interp,
unsigned char *varName, int flags, Tcl_VarTraceProc *proc,
void *clientData);
extern int Tcl_TraceVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags,
Tcl_VarTraceProc *proc, void *clientData);
extern int Tcl_UnsetVar (Tcl_Interp *interp,
unsigned char *varName, int flags);
extern int Tcl_UnsetVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags);
extern void Tcl_UntraceVar (Tcl_Interp *interp,
unsigned char *varName, int flags, Tcl_VarTraceProc *proc,
void *clientData);
extern void Tcl_UntraceVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags,
Tcl_VarTraceProc *proc, void *clientData);
extern int Tcl_VarEval (Tcl_Interp *interp, ...);
extern void * Tcl_VarTraceInfo (Tcl_Interp *interp,
unsigned char *varName, int flags,
Tcl_VarTraceProc *procPtr,
void *prevClientData);
extern void * Tcl_VarTraceInfo2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags,
Tcl_VarTraceProc *procPtr,
void *prevClientData);
extern int Tcl_WaitPids (int numPids, int *pidPtr,
int *statusPtr);
extern void Tcl_AppendElement (Tcl_Interp *interp, unsigned char *string,
int noSep);
extern void Tcl_AppendResult (Tcl_Interp *interp, ...);
extern unsigned char * Tcl_AssembleCmd (Tcl_CmdBuf buffer, unsigned char *string);
extern void Tcl_AddErrorInfo (Tcl_Interp *interp, unsigned char *message);
extern char Tcl_Backslash (unsigned char *src, int *readPtr);
extern int Tcl_CommandComplete (unsigned char *cmd);
extern unsigned char * Tcl_Concat (int argc, unsigned char **argv);
extern int Tcl_ConvertElement (unsigned char *src, unsigned char *dst, int flags);
extern Tcl_CmdBuf Tcl_CreateCmdBuf (void);
extern void Tcl_CreateCommand (Tcl_Interp *interp, unsigned char *cmdName,
Tcl_CmdProc *proc, void *clientData,
Tcl_CmdDeleteProc *deleteProc);
extern Tcl_Interp * Tcl_CreateInterp (void);
extern int Tcl_CreatePipeline (Tcl_Interp *interp, int argc,
unsigned char **argv, int **pidArrayPtr,
int *inPipePtr, int *outPipePtr,
int *errFilePtr);
extern Tcl_Trace Tcl_CreateTrace (Tcl_Interp *interp,
int level, Tcl_CmdTraceProc *proc,
void *clientData);
extern void Tcl_DeleteCmdBuf (Tcl_CmdBuf buffer);
extern int Tcl_DeleteCommand (Tcl_Interp *interp,
unsigned char *cmdName);
extern void Tcl_DeleteInterp (Tcl_Interp *interp);
extern void Tcl_DeleteTrace (Tcl_Interp *interp,
Tcl_Trace trace);
extern void Tcl_DetachPids (int numPids, int *pidPtr);
extern unsigned char * Tcl_ErrnoId (void);
extern int Tcl_Eval (Tcl_Interp *interp, unsigned char *cmd,
int flags, unsigned char **termPtr);
extern int Tcl_EvalFile (Tcl_Interp *interp,
unsigned char *fileName);
extern int Tcl_ExprBoolean (Tcl_Interp *interp, unsigned char *string,
int *ptr);
extern int Tcl_ExprLong (Tcl_Interp *interp, unsigned char *string,
long *ptr);
extern int Tcl_ExprString (Tcl_Interp *interp, unsigned char *string);
extern int Tcl_Fork (void);
extern void Tcl_FreeResult (Tcl_Interp *interp);
extern int Tcl_GetBoolean (Tcl_Interp *interp,
unsigned char *string, int *boolPtr);
extern int Tcl_GetInt (Tcl_Interp *interp,
unsigned char *string, int *intPtr);
extern unsigned char * Tcl_GetVar (Tcl_Interp *interp,
unsigned char *varName, int flags);
extern unsigned char * Tcl_GetVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags);
extern int Tcl_GlobalEval (Tcl_Interp *interp,
unsigned char *command);
extern void Tcl_InitHistory (Tcl_Interp *interp);
extern void Tcl_InitMemory (Tcl_Interp *interp);
extern unsigned char * Tcl_Merge (int argc, unsigned char **argv);
extern unsigned char * Tcl_ParseVar (Tcl_Interp *interp,
unsigned char *string, unsigned char **termPtr);
extern int Tcl_RecordAndEval (Tcl_Interp *interp,
unsigned char *cmd, int flags);
extern void Tcl_ResetResult (Tcl_Interp *interp);
extern int Tcl_ScanElement (unsigned char *string,
int *flagPtr);
extern void Tcl_SetErrorCode (Tcl_Interp *interp, ...);
extern void Tcl_SetResult (Tcl_Interp *interp,
unsigned char *string, Tcl_FreeProc *freeProc);
extern unsigned char * Tcl_SetVar (Tcl_Interp *interp,
unsigned char *varName, unsigned char *newValue, int flags);
extern unsigned char * Tcl_SetVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2,
unsigned char *newValue, int flags);
extern unsigned char * Tcl_SignalId (int sig);
extern unsigned char * Tcl_SignalMsg (int sig);
extern int Tcl_SplitList (Tcl_Interp *interp,
unsigned char *list, int *argcPtr, unsigned char ***argvPtr);
extern int Tcl_StringMatch (unsigned char *string,
unsigned char *pattern);
extern unsigned char * Tcl_TildeSubst (Tcl_Interp *interp,
unsigned char *name);
extern int Tcl_TraceVar (Tcl_Interp *interp,
unsigned char *varName, int flags, Tcl_VarTraceProc *proc,
void *clientData);
extern int Tcl_TraceVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags,
Tcl_VarTraceProc *proc, void *clientData);
extern int Tcl_UnsetVar (Tcl_Interp *interp,
unsigned char *varName, int flags);
extern int Tcl_UnsetVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags);
extern void Tcl_UntraceVar (Tcl_Interp *interp,
unsigned char *varName, int flags, Tcl_VarTraceProc *proc,
void *clientData);
extern void Tcl_UntraceVar2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags,
Tcl_VarTraceProc *proc, void *clientData);
extern int Tcl_VarEval (Tcl_Interp *interp, ...);
extern void * Tcl_VarTraceInfo (Tcl_Interp *interp,
unsigned char *varName, int flags,
Tcl_VarTraceProc *procPtr,
void *prevClientData);
extern void * Tcl_VarTraceInfo2 (Tcl_Interp *interp,
unsigned char *part1, unsigned char *part2, int flags,
Tcl_VarTraceProc *procPtr,
void *prevClientData);
extern int Tcl_WaitPids (int numPids, int *pidPtr,
int *statusPtr);
#endif /* _TCL */

View File

@@ -4,8 +4,6 @@
#include <sys/ioctl.h>
#include <stdint.h>
#define E_TERMCAP "/etc/termcap"
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
@@ -17,7 +15,7 @@ struct termios
tcflag_t c_oflag; /* output mode flags */
tcflag_t c_cflag; /* control mode flags */
tcflag_t c_lflag; /* local mode flags */
cc_t c_line; /* line discipline */
cc_t c_line; /* line discipline */
cc_t c_cc[NCCS]; /* control characters */
speed_t c_ispeed; /* input speed */
speed_t c_ospeed; /* output speed */
@@ -145,5 +143,4 @@ extern int tcsetattr(int, int, struct termios *);
#define TIOCSETAW _IOW(i, 92, struct termios)
#define TIOCSETAF _IOW(i, 92, struct termios)
#endif

View File

@@ -6,30 +6,44 @@
#ifndef _TIME_H
#define _TIME_H
#include <sys/types.h> /* for time_t */
#ifndef NULL
#define NULL 0
#endif
#ifndef _TIME_T
#define _TIME_T
typedef long time_t;
#endif
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned size_t;
#endif
/*
* Structure returned by gmtime and localtime calls (see ctime(3)).
*/
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
long tm_gmtoff;
char *tm_zone;
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
long tm_gmtoff;
char *tm_zone;
};
extern struct tm *gmtime(), *localtime();
extern char *asctime(), *ctime();
extern time_t time();
struct tm *gmtime(const time_t *);
struct tm *localtime(const time_t *);
char *asctime(const struct tm *);
char *ctime(const time_t *);
time_t time(time_t *);
size_t strftime (char *s, size_t maxsize, const char *format,
const struct tm *timeptr);
const struct tm *timeptr);
#endif

View File

@@ -4,17 +4,17 @@
* specifies the terms and conditions for redistribution.
*/
struct ttyent { /* see getttyent(3) */
char *ty_name; /* terminal device name */
char *ty_getty; /* command to execute, usually getty */
char *ty_type; /* terminal type for termcap (3X) */
int ty_status; /* status flags (see below for defines) */
char *ty_window; /* command to start up window manager */
char *ty_comment; /* usually the location of the terminal */
struct ttyent { /* see getttyent(3) */
char *ty_name; /* terminal device name */
char *ty_getty; /* command to execute, usually getty */
char *ty_type; /* terminal type for termcap (3X) */
int ty_status; /* status flags (see below for defines) */
char *ty_window; /* command to start up window manager */
char *ty_comment; /* usually the location of the terminal */
};
#define TTY_ON 0x1 /* enable logins (startup getty) */
#define TTY_SECURE 0x2 /* allow root to login */
#define TTY_ON 0x1 /* enable logins (startup getty) */
#define TTY_SECURE 0x2 /* allow root to login */
struct ttyent *getttyent (void);
struct ttyent *getttynam (const char *name);

View File

@@ -1,35 +1,34 @@
/*
* @(#)tzfile.h 5.2.1 (2.11BSD) 1996/11/29
* @(#)tzfile.h 5.2.1 (2.11BSD) 1996/11/29
*/
/*
** Information about time zone files.
*/
/* Time zone object file directory */
#define TZDEFAULT "/etc/localtime"
/* Time zone object file directory */
#define TZDIR "/usr/share/zoneinfo"
#define TZDEFAULT "/etc/localtime"
/*
** Each file begins with. . .
*/
struct tzhead {
char tzh_reserved[32]; /* reserved for future use */
char tzh_timecnt[4]; /* coded number of transition times */
char tzh_typecnt[4]; /* coded number of local time types */
char tzh_charcnt[4]; /* coded number of abbr. chars */
char tzh_reserved[32]; /* reserved for future use */
char tzh_timecnt[4]; /* coded number of transition times */
char tzh_typecnt[4]; /* coded number of local time types */
char tzh_charcnt[4]; /* coded number of abbr. chars */
};
/*
** . . .followed by. . .
**
** tzh_timecnt (char [4])s coded transition times a la time(2)
** tzh_timecnt (unsigned char)s types of local time starting at above
** tzh_typecnt repetitions of
** one (char [4]) coded GMT offset in seconds
** one (unsigned char) used to set tm_isdt
** one (unsigned char) that's an abbreviation list index
** tzh_charcnt (char)s '\0'-terminated zone abbreviaton strings
** tzh_timecnt (char [4])s coded transition times a la time(2)
** tzh_timecnt (unsigned char)s types of local time starting at above
** tzh_typecnt repetitions of
** one (char [4]) coded GMT offset in seconds
** one (unsigned char) used to set tm_isdt
** one (unsigned char) that's an abbreviation list index
** tzh_charcnt (char)s '\0'-terminated zone abbreviaton strings
*/
/*
@@ -43,58 +42,57 @@ struct tzhead {
** 138 years of Pacific Presidential Election time
** (where there are three time zone transitions every fourth year).
*/
#define TZ_MAX_TIMES 370
#define TZ_MAX_TIMES 370
#define NOSOLAR /* We currently don't handle solar time */
#define NOSOLAR /* We currently don't handle solar time */
#ifndef NOSOLAR
#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */
#ifndef NOSOLAR
#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */
#else /* !NOSOLAR */
#define TZ_MAX_TYPES 10 /* Maximum number of local time types */
#define TZ_MAX_TYPES 10 /* Maximum number of local time types */
#endif /* !NOSOLAR */
#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */
#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */
#define SECS_PER_MIN 60
#define MINS_PER_HOUR 60
#define HOURS_PER_DAY 24
#define DAYS_PER_WEEK 7
#define DAYS_PER_NYEAR 365
#define DAYS_PER_LYEAR 366
#define SECS_PER_HOUR (SECS_PER_MIN * MINS_PER_HOUR)
#define SECS_PER_DAY ((long) SECS_PER_HOUR * HOURS_PER_DAY)
#define MONS_PER_YEAR 12
#define SECS_PER_MIN 60
#define MINS_PER_HOUR 60
#define HOURS_PER_DAY 24
#define DAYS_PER_WEEK 7
#define DAYS_PER_NYEAR 365
#define DAYS_PER_LYEAR 366
#define SECS_PER_HOUR (SECS_PER_MIN * MINS_PER_HOUR)
#define SECS_PER_DAY ((long) SECS_PER_HOUR * HOURS_PER_DAY)
#define MONS_PER_YEAR 12
#define TM_SUNDAY 0
#define TM_MONDAY 1
#define TM_TUESDAY 2
#define TM_WEDNESDAY 3
#define TM_THURSDAY 4
#define TM_FRIDAY 5
#define TM_SATURDAY 6
#define TM_SUNDAY 0
#define TM_MONDAY 1
#define TM_TUESDAY 2
#define TM_WEDNESDAY 3
#define TM_THURSDAY 4
#define TM_FRIDAY 5
#define TM_SATURDAY 6
#define TM_JANUARY 0
#define TM_FEBRUARY 1
#define TM_MARCH 2
#define TM_APRIL 3
#define TM_MAY 4
#define TM_JUNE 5
#define TM_JULY 6
#define TM_AUGUST 7
#define TM_SEPTEMBER 8
#define TM_OCTOBER 9
#define TM_NOVEMBER 10
#define TM_DECEMBER 11
#define TM_SUNDAY 0
#define TM_JANUARY 0
#define TM_FEBRUARY 1
#define TM_MARCH 2
#define TM_APRIL 3
#define TM_MAY 4
#define TM_JUNE 5
#define TM_JULY 6
#define TM_AUGUST 7
#define TM_SEPTEMBER 8
#define TM_OCTOBER 9
#define TM_NOVEMBER 10
#define TM_DECEMBER 11
#define TM_SUNDAY 0
#define TM_YEAR_BASE 1900
#define TM_YEAR_BASE 1900
#define EPOCH_YEAR 1970
#define EPOCH_WDAY TM_THURSDAY
#define EPOCH_YEAR 1970
#define EPOCH_WDAY TM_THURSDAY
/*
** Accurate only for the past couple of centuries;
** that will probably do.
*/
#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)
#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)

View File

@@ -1,6 +1,6 @@
/*-
* Copyright (c) 1991, 1993, 1994
* The Regents of the University of California. All rights reserved.
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
@@ -38,64 +38,64 @@
*/
#ifndef _UNISTD_H_
#define _UNISTD_H_
#define _UNISTD_H_
#include <sys/types.h>
#define STDIN_FILENO 0 /* standard input file descriptor */
#define STDOUT_FILENO 1 /* standard output file descriptor */
#define STDERR_FILENO 2 /* standard error file descriptor */
#define STDIN_FILENO 0 /* standard input file descriptor */
#define STDOUT_FILENO 1 /* standard output file descriptor */
#define STDERR_FILENO 2 /* standard error file descriptor */
#ifndef NULL
#define NULL 0 /* null pointer constant */
#define NULL 0 /* null pointer constant */
#endif
/* Values for the second argument to access.
These may be OR'd together. */
#define R_OK 4 /* Test for read permission. */
#define W_OK 2 /* Test for write permission. */
#define X_OK 1 /* Test for execute permission. */
#define F_OK 0 /* Test for existence. */
#define R_OK 4 /* Test for read permission. */
#define W_OK 2 /* Test for write permission. */
#define X_OK 1 /* Test for execute permission. */
#define F_OK 0 /* Test for existence. */
void _exit (int);
int access();
void _exit (int);
int access();
unsigned int alarm();
pid_t fork();
gid_t getegid();
uid_t geteuid();
gid_t getgid();
char *getlogin();
pid_t getpgrp();
pid_t getpid();
pid_t getppid();
uid_t getuid();
off_t lseek();
ssize_t read();
unsigned int sleep();
char *ttyname();
ssize_t write (int fd, const void *buf, size_t count);
pid_t fork();
gid_t getegid();
uid_t geteuid();
gid_t getgid();
char *getlogin();
pid_t getpgrp();
pid_t getpid();
pid_t getppid();
uid_t getuid();
off_t lseek();
ssize_t read();
unsigned int sleep();
char *ttyname();
ssize_t write (int fd, const void *buf, size_t count);
int truncate (const char *path, off_t length);
int ftruncate (int fd, off_t length);
void *brk (const void *addr);
int _brk (const void *addr);
char *crypt();
void endusershell();
long gethostid();
char *getpass();
char *getusershell();
char *getwd();
void psignal();
extern char *sys_siglist[];
char *re_comp();
void *sbrk (int incr);
int sethostid();
void setusershell();
void sync();
unsigned int ualarm();
void usleep();
void *brk (const void *addr);
int _brk (const void *addr);
char *crypt();
void endusershell();
long gethostid();
char *getpass();
char *getusershell();
char *getwd();
void psignal();
extern char *sys_siglist[];
char *re_comp();
void *sbrk (int incr);
int sethostid();
void setusershell();
void sync();
unsigned int ualarm();
void usleep();
int pause (void);
pid_t vfork();
pid_t vfork();
int pipe (int pipefd[2]);
int close (int fd);
@@ -126,21 +126,21 @@ int stat (const char *path, struct stat *buf);
int fstat (int fd, struct stat *buf);
int lstat (const char *path, struct stat *buf);
int execl (const char *path, const char *arg0, ... /* NULL */);
int execle (const char *path, const char *arg0, ... /* NULL, char *envp[] */);
int execlp (const char *file, const char *arg0, ... /* NULL */);
int execl (const char *path, const char *arg0, ... /* NULL */);
int execle (const char *path, const char *arg0, ... /* NULL, char *envp[] */);
int execlp (const char *file, const char *arg0, ... /* NULL */);
int execv (const char *path, char *const argv[]);
int execve (const char *path, char *const arg0[], char *const envp[]);
int execvp (const char *file, char *const argv[]);
int execv (const char *path, char *const argv[]);
int execve (const char *path, char *const arg0[], char *const envp[]);
int execvp (const char *file, char *const argv[]);
extern char **environ; /* Environment, from crt0. */
extern const char *__progname; /* Program name, from crt0. */
extern char **environ; /* Environment, from crt0. */
extern const char *__progname; /* Program name, from crt0. */
int getopt (int argc, char * const argv[], const char *optstring);
int getopt (int argc, char * const argv[], const char *optstring);
extern char *optarg; /* getopt(3) external variables */
extern int opterr, optind, optopt;
extern char *optarg; /* getopt(3) external variables */
extern int opterr, optind, optopt;
#ifndef _VA_LIST_
# ifdef __GNUC__
@@ -151,14 +151,14 @@ extern int opterr, optind, optopt;
# endif
#endif
void err (int eval, const char *fmt, ...);
void errx (int eval, const char *fmt, ...);
void warn (const char *fmt, ...);
void warnx (const char *fmt, ...);
void verr (int eval, const char *fmt, va_list ap);
void verrx (int eval, const char *fmt, va_list ap);
void vwarn (const char *fmt, va_list ap);
void vwarnx (const char *fmt, va_list ap);
void err (int eval, const char *fmt, ...);
void errx (int eval, const char *fmt, ...);
void warn (const char *fmt, ...);
void warnx (const char *fmt, ...);
void verr (int eval, const char *fmt, va_list ap);
void verrx (int eval, const char *fmt, va_list ap);
void vwarn (const char *fmt, va_list ap);
void vwarnx (const char *fmt, va_list ap);
#ifndef _VA_LIST_
# undef va_list

View File

@@ -15,13 +15,13 @@
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
#define UT_NAMESIZE 15
#define UT_LINESIZE 8
#define UT_HOSTSIZE 16
#define UT_NAMESIZE 15
#define UT_LINESIZE 8
#define UT_HOSTSIZE 16
struct utmp {
char ut_line[UT_LINESIZE];
char ut_name[UT_NAMESIZE];
char ut_host[UT_HOSTSIZE];
long ut_time;
char ut_line[UT_LINESIZE];
char ut_name[UT_NAMESIZE];
char ut_host[UT_HOSTSIZE];
long ut_time;
};

View File

@@ -2,63 +2,62 @@
* Author: S.M. Schultz
*
* ----------- Modification History ------------
* Version Date Reason For Modification
* 1.0 01Jan80 1. Initial release.
* 2.0 31Mar83 2. Cleanup.
* 3.0 08Sep93 3. Change v_foffset to off_t instead of int.
* 3.1 21Oct93 4. Create union member of structure to
* make 'int' or 'char' access to data easy.
* Define segment+offset and modified macros.
* Place into the public domain.
* --------------------------------------------------
*/
* Version Date Reason For Modification
* 1.0 01Jan80 1. Initial release.
* 2.0 31Mar83 2. Cleanup.
* 3.0 08Sep93 3. Change v_foffset to off_t instead of int.
* 3.1 21Oct93 4. Create union member of structure to
* make 'int' or 'char' access to data easy.
* Define segment+offset and modified macros.
* Place into the public domain.
* --------------------------------------------------
*/
#include <sys/types.h>
#define MAXSEGNO 16384 /* max number of segments in a space */
#define BYTESPERSEG 1024 /* must be power of two! */
#define LOG2BPS 10 /* log2(BYTESPERSEG) */
#define WORDSPERSEG (BYTESPERSEG/sizeof (int))
#define MAXSEGNO 16384 /* max number of segments in a space */
#define BYTESPERSEG 1024 /* must be power of two! */
#define LOG2BPS 10 /* log2(BYTESPERSEG) */
#define WORDSPERSEG (BYTESPERSEG/sizeof (int))
struct vspace {
int v_fd; /* file for swapping */
off_t v_foffset; /* offset for computing file addresses */
int v_maxsegno; /* number of segments in this space */
};
int v_fd; /* file for swapping */
off_t v_foffset; /* offset for computing file addresses */
int v_maxsegno; /* number of segments in this space */
};
struct dlink { /* general double link structure */
struct dlink *fwd; /* forward link */
struct dlink *back; /* back link */
};
struct dlink *fwd; /* forward link */
struct dlink *back; /* back link */
};
struct vseg { /* structure of a segment in memory */
struct dlink s_link; /* for linking into lru list */
int s_segno; /* segment number */
struct vspace *s_vspace; /* which virtual space */
int s_lock_count;
int s_flags;
union
{
int _winfo[WORDSPERSEG]; /* the actual segment */
char _cinfo[BYTESPERSEG];
} v_un;
};
struct vseg { /* structure of a segment in memory */
struct dlink s_link; /* for linking into lru list */
int s_segno; /* segment number */
struct vspace *s_vspace; /* which virtual space */
int s_lock_count;
int s_flags;
union {
int _winfo[WORDSPERSEG]; /* the actual segment */
char _cinfo[BYTESPERSEG];
} v_un;
};
#define s_winfo v_un._winfo
#define s_cinfo v_un._cinfo
#define s_winfo v_un._winfo
#define s_cinfo v_un._cinfo
/* masks for s_flags */
#define S_DIRTY 01 /* segment has been modified */
#define S_DIRTY 01 /* segment has been modified */
long nswaps; /* number of swaps */
long nmapsegs; /* number of mapseg calls */
long nswaps; /* number of swaps */
long nmapsegs; /* number of mapseg calls */
int vminit(), vmopen();
struct vseg *vmmapseg();
void vmlock(), vmunlock(), vmclrseg(), vmmodify();
void vmflush(), vmclose();
int vminit(), vmopen();
struct vseg *vmmapseg();
void vmlock(), vmunlock(), vmclrseg(), vmmodify();
void vmflush(), vmclose();
typedef long VADDR;
#define VMMODIFY(seg) (seg->s_flags |= S_DIRTY)
#define VSEG(va) ((short)(va >> LOG2BPS))
#define VOFF(va) ((u_short)va % BYTESPERSEG)
typedef long VADDR;
#define VMMODIFY(seg) (seg->s_flags |= S_DIRTY)
#define VSEG(va) ((short)(va >> LOG2BPS))
#define VOFF(va) ((u_short)va % BYTESPERSEG)

View File

@@ -1,5 +1,5 @@
#ifndef _SOCKET_H_
#define _SOCKET_H_
#ifndef _SOCKET_H_
#define _SOCKET_H_
#include "w5100.h"

View File

@@ -9,8 +9,8 @@
* Updated August/3/2011 by Lowell Scott Hanson to be compatable with chipKIT boards
* Updated April/13/2012 by Serge Vakulenko for RetroBSD project
*/
#ifndef W5100_H_INCLUDED
#define W5100_H_INCLUDED
#ifndef W5100_H_INCLUDED
#define W5100_H_INCLUDED
#include <stdint.h>

View File

@@ -1,21 +1,11 @@
TOPSRC = $(shell cd ..; pwd)
SUBDIR = startup libc libcurses libtermlib libwiznet
SUBDIR = startup libc libm libcurses libtermlib libwiznet libreadline libgpanel
PROG = ar as aout ld nm ranlib size strip
# Build a list of the host include directories.
CPP = $(shell gcc -print-prog-name=cc1)
HOSTINC = $(addprefix -I,$(shell echo | $(CPP) -v 2>&1 | grep '^ /.*include'))
# Add system include path
ifeq (,$(wildcard /usr/include/i386-linux-gnu))
HOSTINC += -I/usr/include
else
HOSTINC += -I/usr/include/i386-linux-gnu
endif
CFLAGS += -nostdinc -fno-builtin -g -Werror -Wall -DCROSS -I. $(HOSTINC) \
-I$(TOPSRC)/include -I$(TOPSRC)/src/cmd/ar \
-I$(TOPSRC)/src/cmd/as
CFLAGS += -std=gnu89 -fno-builtin -g -Werror -Wall -DCROSS -I. \
-idirafter $(TOPSRC)/include \
-idirafter $(TOPSRC)/src/cmd/ar \
-idirafter $(TOPSRC)/src/cmd/as
LDFLAGS += -g
AR_OBJS = ar.o append.o archive.o contents.o delete.o extract.o \
@@ -24,8 +14,9 @@ AOUT_OBJS = aout.o mips-dis.o
RANLIB_OBJS = ranlib.o archive.o
HEADERS = a.out.h ar.h nlist.h ranlib.h
vpath %.c $(TOPSRC)/src/cmd/ar $(TOPSRC)/src/cmd/as $(TOPSRC)/src/cmd/ld \
$(TOPSRC)/src/cmd/nm $(TOPSRC)/src/cmd/ranlib $(TOPSRC)/src/cmd
vpath %.c $(TOPSRC)/src/cmd/aout $(TOPSRC)/src/cmd/ar $(TOPSRC)/src/cmd/as \
$(TOPSRC)/src/cmd/ld $(TOPSRC)/src/cmd/nm $(TOPSRC)/src/cmd/ranlib \
$(TOPSRC)/src/cmd
all install depend: $(HEADERS) $(SUBDIR) $(PROG)
-for i in $(SUBDIR); do $(MAKE) -C $$i $(MFLAGS) DESTDIR=$(DESTDIR) $@; done

View File

@@ -87,10 +87,10 @@ OBJS += inet_addr.o inet_network.o inet_netof.o \
inet_ntoa.o inet_lnaof.o inet_maddr.o
# libc/compat
OBJS += creat.o ftime.o gethostid.o gtty.o memccpy.o memchr.o \
OBJS += creat.o ftime.o gethostid.o memccpy.o memchr.o \
memcmp.o memcpy.o memset.o nice.o pause.o rand.o \
sethostid.o setregid.o setreuid.o setrgid.o setruid.o \
sigcompat.o strchr.o strrchr.o stty.o times.o tmpnam.o \
sigcompat.o strchr.o strrchr.o times.o tmpnam.o \
utime.o
# libc/runtime

18
lib/libgpanel/Makefile Normal file
View File

@@ -0,0 +1,18 @@
TOPSRC = $(shell cd ../..; pwd)
include $(TOPSRC)/target.mk
vpath %.c $(TOPSRC)/src/libgpanel
CFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror
OBJS = open.o clear.o pixel.o line.o rect.o fill.o circle.o \
image.o char.o text.o text_width.o
all: ../libgpanel.a
../libgpanel.a: ../ar ../ranlib $(OBJS)
../ar rc $@ $(OBJS)
../ranlib $@
clean:
rm -f *~ *.o a.out *.a

18
lib/libm/Makefile Normal file
View File

@@ -0,0 +1,18 @@
TOPSRC = $(shell cd ../..; pwd)
include $(TOPSRC)/target.mk
vpath %.c $(TOPSRC)/src/libm
CFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror
OBJS = asin.o atan.o exp.o erf.o floor.o fmod.o hypot.o j0.o j1.o \
jn.o log.o pow.o sin.o sinh.o sqrt.o tan.o tanh.o
all: ../libm.a
../libm.a: ../ar ../ranlib $(OBJS)
../ar rc $@ $(OBJS)
../ranlib $@
clean:
rm -f *~ *.o a.out *.a

17
lib/libreadline/Makefile Normal file
View File

@@ -0,0 +1,17 @@
TOPSRC = $(shell cd ../..; pwd)
include $(TOPSRC)/target.mk
vpath %.c $(TOPSRC)/src/libreadline
CFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror
OBJS = readline.o
all: ../libreadline.a
../libreadline.a: ../ar ../ranlib $(OBJS)
../ar rc $@ $(OBJS)
../ranlib $@
clean:
rm -f *~ *.o a.out *.a

7
root/.profile Normal file
View File

@@ -0,0 +1,7 @@
echo 'erase ^?, kill ^U, intr ^C'
stty dec
PATH=/bin:/sbin:/etc
export PATH
HOME=/
export HOME
export TERM

2712
rootfs.manifest Normal file

File diff suppressed because it is too large Load Diff

5
share/.gitignore vendored
View File

@@ -1,3 +1,6 @@
re.help
calendar
emg.keys
misc
re.help
unixbench
zoneinfo

25486
share/dict/words Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +0,0 @@
all: ashello echo chello
ashello: ashello.o
$(LD) ashello.o -o $@
chello: chello.o
$(CC) chello.o -o $@
echo: echo.o
$(LD) $@.o -o $@
clean:
rm -f *.o ashello echo chello *.dis *~

View File

@@ -1,29 +0,0 @@
TOPSRC = $(shell cd ../..; pwd)
include $(TOPSRC)/target.mk
CFLAGS += -Werror
ASFLAGS += -DCROSS
ASLDFLAGS = --oformat=elf32-tradlittlemips -N -nostartfiles -T $(TOPSRC)/src/elf32-mips.ld
all: chello cplus echo stdarg
chello: chello.o
${CC} ${LDFLAGS} -o chello.elf chello.o ${LIBS}
${OBJDUMP} -S chello.elf > chello.dis
${SIZE} chello.elf
${ELF2AOUT} chello.elf $@
cplus: cplus.o
${CXX} ${LDFLAGS} -nostdlib -o cplus.elf cplus.o ${LIBS}
${OBJDUMP} -S cplus.elf > cplus.dis
${SIZE} cplus.elf
${ELF2AOUT} cplus.elf $@
echo: echo.o
${LD} ${ASLDFLAGS} -o $@.elf $@.o
${OBJDUMP} -S $@.elf > $@.dis
${SIZE} $@.elf
${ELF2AOUT} $@.elf $@
clean:
rm -f *.o *.elf ${MAN} chello cplus echo stdarg *.elf *.dis tags *~

View File

@@ -0,0 +1,11 @@
all: ashello echo
ashello: ashello.o
$(LD) ashello.o -o $@
echo: echo.o
$(LD) $@.o -o $@
clean:
rm -f *.o ashello echo *.dis *~

View File

@@ -0,0 +1,17 @@
TOPSRC = $(shell cd ../../..; pwd)
include $(TOPSRC)/target.mk
CFLAGS += -Werror
ASFLAGS += -DCROSS
ASLDFLAGS = --oformat=elf32-tradlittlemips -N -nostartfiles -T $(TOPSRC)/src/elf32-mips.ld
all: echo
echo: echo.o
${LD} ${ASLDFLAGS} -o $@.elf $@.o
${OBJDUMP} -S $@.elf > $@.dis
${SIZE} $@.elf
${ELF2AOUT} $@.elf $@
clean:
rm -f *.o *.elf ${MAN} echo *.elf *.dis tags *~

50
share/examples/c/Makefile Normal file
View File

@@ -0,0 +1,50 @@
CC = cc
PROG = hello stdarg skeleton primelist primesum test1 test2 test3 \
gpio adc rain q8 tetris lcd6
all: $(PROG)
hello: hello.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
stdarg: stdarg.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
skeleton: skeleton.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
primelist: primelist.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
primesum: primesum.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
gpio: gpio.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
adc: adc.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
rain: rain.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
q8: q8.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
tetris: tetris.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
lcd6: lcd6.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
test1: test1.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
test2: test2.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
test3: test3.c
$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $?
clean:
rm -f *.o *~ $(PROG)

View File

@@ -0,0 +1,27 @@
TOPSRC = $(shell cd ../../..; pwd)
include $(TOPSRC)/target.mk
CFLAGS += -Werror -Wall
all: chello stdarg lcd6
chello: chello.o
${CC} ${LDFLAGS} -o chello.elf chello.o ${LIBS}
${OBJDUMP} -S chello.elf > chello.dis
${SIZE} chello.elf
${ELF2AOUT} chello.elf $@
tetris: tetris.o
${CC} ${LDFLAGS} -o tetris.elf tetris.o ${LIBS}
${OBJDUMP} -S tetris.elf > tetris.dis
${SIZE} tetris.elf
${ELF2AOUT} tetris.elf $@
lcd6: lcd6.o
${CC} ${LDFLAGS} -o lcd6.elf lcd6.o ${LIBS}
${OBJDUMP} -S lcd6.elf > lcd6.dis
${SIZE} lcd6.elf
${ELF2AOUT} lcd6.elf $@
clean:
rm -f *.o *.elf ${MAN} chello stdarg lcd6 *.elf *.dis tags *~

29
share/examples/c/adc.c Normal file
View File

@@ -0,0 +1,29 @@
/*
* Example of reading ADC data.
*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
char buf[100];
int main(void)
{
int i, fd, value;
for (i=0; i<16; i++) {
sprintf(buf, "/dev/adc%d", i);
fd = open(buf, O_RDWR);
if (fd < 0) {
printf("Error: unable to open %s\n", buf);
} else {
if (read(fd, buf, 20) > 0) {
value = strtol (buf, 0, 0);
printf("adc%-2d = %d\n", i, value);
}
close(fd);
}
}
return 0;
}

26
share/examples/c/gpio.c Normal file
View File

@@ -0,0 +1,26 @@
/*
* Example of polling general purpose i/o pins.
*/
#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/gpio.h>
int main(void)
{
int fd, pnum, value;
fd = open ("/dev/porta", O_RDWR);
if (fd < 0) {
perror ("/dev/porta");
return -1;
}
for (pnum=0; pnum<7; pnum++) {
value = ioctl (fd, GPIO_POLL | GPIO_PORT (pnum), 0);
if (value < 0)
perror ("GPIO_POLL");
printf ("port%c = 0x%04x\n", pnum + 'A', value);
}
return 0;
}

287
share/examples/c/lcd6.c Normal file
View File

@@ -0,0 +1,287 @@
/*
* Demo for 6 digit LCD module based on HT1261 controller.
* Based on example sources from http://www.canton-electronics.com
*
* Copyright (C) 2015 Serge Vakulenko
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for any purpose and without fee is hereby
* granted, provided that the above copyright notice appear in all
* copies and that both that the copyright notice and this
* permission notice and warranty disclaimer appear in supporting
* documentation, and that the name of the author not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
*
* The author disclaim all warranties with regard to this
* software, including all implied warranties of merchantability
* and fitness. In no event shall the author be liable for any
* special, indirect or consequential damages or any damages
* whatsoever resulting from loss of use, data or profits, whether
* in an action of contract, negligence or other tortious action,
* arising out of or in connection with the use or performance of
* this software.
*/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/time.h>
#include <sys/gpio.h>
/*
* Digits, decimal dots and battery levels:
* A B C D E F
* -- -- -- -- -- -- z
* | | | | | | | | | | | | y
* -- -- -- -- -- -- x
* | | | | | | | | | | | |
* -- -- -- c -- d -- e --
*
* Memory map:
* Byte 0, bits 0-6 - segments of digit 'F'
* Byte 0, bit 7 - decimal dot 'e'
* Byte 1, bits 0-6 - segments of digit 'E'
* Byte 1, bit 7 - decimal dot 'd'
* Byte 2, bits 0-6 - segments of digit 'D'
* Byte 2, bit 7 - decimal dot 'c'
* Byte 3, bits 0-6 - segments of digit 'C'
* Byte 3, bit 7 - battery level 'x'
* Byte 4, bits 0-6 - segments of digit 'B'
* Byte 4, bit 7 - battery level 'y'
* Byte 5, bits 0-6 - segments of digit 'A'
* Byte 5, bit 7 - battery level 'z'
*
* Segments are mapped to bits 0-6:
* --4--
* 0---5
* --1--
* 2---6
* --3--
*/
/*
* Signal assignment.
* LED modulee is connected to pins 16,17,18 of Fubarino SD board.
*
* Fubarino PIC32 LED module
* --------------------------
* 16 RE0 CS
* 17 RE1 WR
* 18 RE2 DATA
*/
#define gpio_cs_clear() ioctl(gpio, GPIO_PORTE | GPIO_CLEAR, 1 << 0)
#define gpio_cs_set() ioctl(gpio, GPIO_PORTE | GPIO_SET, 1 << 0)
#define gpio_wr_clear() ioctl(gpio, GPIO_PORTE | GPIO_CLEAR, 1 << 1)
#define gpio_wr_set() ioctl(gpio, GPIO_PORTE | GPIO_SET, 1 << 1)
#define gpio_data_clear() ioctl(gpio, GPIO_PORTE | GPIO_CLEAR, 1 << 2)
#define gpio_data_set() ioctl(gpio, GPIO_PORTE | GPIO_SET, 1 << 2)
/*
* HT1621 commands
*/
#define HT_SYS_DIS 0x00 /* Turn off system osc and bias generator */
#define HT_SYS_EN 0x01 /* Turn on system oscillator */
#define HT_LCD_OFF 0x02 /* Turn off LCD bias generator */
#define HT_LCD_ON 0x03 /* Turn on LCD bias generator */
#define HT_CLOCK_XTAL 0x14 /* Crystal 32kHz */
#define HT_CLOCK_RC 0x18 /* On-chip RC oscillator 256kHz */
#define HT_CLOCK_EXT 0x1c /* External clock */
#define HT_BIAS_1_3 0x21 /* LCD 1/3 bias option, 2 commons default */
#define HT_COMMONS_3 0x04 /* 3 commons option */
#define HT_COMMONS_4 0x08 /* 4 commons option */
/*
* Mapping of symbols to segments.
* 0, 1, 2, 3, 4, 5, 6, 7,
* 8, 9, A, b, C, c, d, E,
* F, H, h, L, n, N, o, P,
* r, t, U, -, ,
*/
const char char_to_segm[] = {
0x7D, 0x60, 0x3E, 0x7A, 0x63, 0x5B, 0x5F, 0x70,
0x7F, 0x7B, 0x77, 0x4F, 0x1D, 0x0E, 0x6E, 0x1F,
0x17, 0x67, 0x47, 0x0D, 0x46, 0x75, 0x37, 0x06,
0x0F, 0x6D, 0x02, 0x00,
};
/*
* File descriptor for GPIO driver.
*/
int gpio;
/*
* Suspend the process for some amount of milliseconds.
*/
void mdelay(unsigned msec)
{
usleep(msec * 1000);
}
/*
* Send a series of bits to HT1621.
* Up to 8 bits, high bit first.
* Max clock rate is 150kHz.
*/
void ht_send(int nbits, int data)
{
data <<= (8 - nbits);
gpio_wr_clear();
while (nbits-- > 0) {
if (data & 0x80)
gpio_data_set();
else
gpio_data_clear();
gpio_wr_set();
gpio_wr_clear();
data <<= 1;
}
}
/*
* Send command to HT1621.
*/
void ht_cmd(int command)
{
gpio_cs_clear();
ht_send(3, 0x4); /* Mode "100" */
ht_send(8, command);
gpio_cs_set();
}
/*
* Send data and command.
*/
void ht_write(int addr, int data)
{
gpio_cs_clear();
ht_send(3, 0x5); /* Mode "101" */
ht_send(6, addr << 1); /* Half-byte address 6 bits */
ht_send(8, data); /* Data 8 bits */
gpio_cs_set();
}
/*
* Initialize LCD controller.
*/
void lcd_init()
{
/* Open GPIO driver. */
gpio = open("/dev/porta", 1);
if (gpio < 0) {
perror("/dev/porta");
exit(-1);
}
/* Configure pins RE0-RE2 as outputs. */
ioctl(gpio, GPIO_PORTE | GPIO_CONFOUT, 0x07);
gpio_cs_set();
gpio_wr_clear();
/* Setup appropriate HT1621 mode. */
ht_cmd(HT_SYS_EN);
ht_cmd(HT_CLOCK_RC);
ht_cmd(HT_BIAS_1_3 | HT_COMMONS_4);
ht_cmd(HT_LCD_ON);
}
/*
* Set display memory to given value.
*/
void lcd_clear(int value)
{
int i;
for (i=0; i<6; i++) {
ht_write(i, value);
}
}
/*
* LCD on/off.
*/
void lcd_enable(int on)
{
if (on)
ht_cmd(HT_LCD_ON);
else
ht_cmd(HT_LCD_OFF);
}
/*
* Display data.
* val - Data to be displayed, 0-999999
* dot - Display decimal dot, 0-3
* bat - Battery level, 0-3
*/
void lcd_display(unsigned val, int dot, int bat)
{
int i, byte[6];
/* Set numeric value. */
byte[5] = char_to_segm[val / 100000];
byte[4] = char_to_segm[(val / 10000) % 10];
byte[3] = char_to_segm[(val / 1000) % 10];
byte[2] = char_to_segm[(val / 100) % 10];
byte[1] = char_to_segm[(val / 10) % 10];
byte[0] = char_to_segm[val % 10];
/* Enable decimal dot/ */
switch (dot) {
case 1:
byte[0] |= 1 << 7;
break;
case 2:
byte[1] |= 1 << 7;
break;
case 3:
byte[2] |= 1 << 7;
break;
default:
break;
}
if (bat > 0)
byte[3] |= 1 << 7;
if (bat > 1)
byte[4] |= 1 << 7;
if (bat > 2)
byte[5] |= 1 << 7;
for (i=0; i<6; i++) {
ht_write(i, byte[i]);
}
}
int main()
{
int i;
/* Initialize hardware. */
lcd_init();
/* Blink all segments twice. */
lcd_clear(0xff);
mdelay(1000);
lcd_clear(0);
mdelay(1000);
lcd_clear(0xff);
mdelay(1000);
lcd_clear(0);
mdelay(1000);
/* Show all characters on all segments. */
for (i=0; i<sizeof(char_to_segm); i++) {
lcd_clear(char_to_segm[i]);
mdelay(200);
}
lcd_clear(0);
/* Display counter 0 to 999999. */
for (;;) {
for (i=0; i<999999; i++) {
lcd_display(i, i/10%4, i/10%4);
mdelay(100);
}
}
return 0;
}

View File

@@ -0,0 +1,35 @@
/*
* Print the list of prime numbers up to 100.
*/
#include <stdio.h>
int isprime(int);
int main(void)
{
int n;
for (n=2; n<100; ++n) {
if (isprime(n)) {
printf("%d ", n);
}
}
printf("\n");
}
int isprime(int n)
{
int j;
if (n == 2)
return 1;
if (n % 2 == 0)
return 0;
for (j=3; j*j<=n; j+=2)
if (n % j == 0)
return 0;
return 1;
}

View File

@@ -0,0 +1,35 @@
/*
* Compute the sum of prime numbers up to 10000.
*/
#include <stdio.h>
int isprime(int);
int main(void)
{
int sum, n;
sum = 0;
for (n=2; n<10000; ++n) {
if (isprime(n)) {
sum += n;
}
}
printf("Sum of primes less than 10000: %d\n", sum);
}
int isprime(int n)
{
int j;
if (n == 2)
return 1;
if (n % 2 == 0)
return 0;
for (j=3; j*j<=n; j+=2)
if (n % j == 0)
return 0;
return 1;
}

209
share/examples/c/q8.c Normal file
View File

@@ -0,0 +1,209 @@
/*
* Eight Queens puzzle
*
* (C) 2010 by Mark Sproul
* Open source as per standard Arduino code
* Modified by Pito 12/2012 for SmallC and then by Alexey Frunze for Smaller C
*/
#include <stdio.h>
#define TRUE 1
#define FALSE 0
unsigned int gChessBoard[8];
unsigned int gLoopCounter;
int gValidCount;
int CheckCurrentBoard(void)
{
int ii;
int jj;
int theRow;
int theLongRow;
int theLongColumns;
int bitCount;
//* we know we have 1 in each row,
//* Check for 1 in each column
theRow = 0;
for (ii=0; ii<8; ii++) {
theRow |= gChessBoard[ii];
}
if (theRow != 0x0ff) {
return FALSE;
}
//* we have 1 in each column, now check the diagonals
theLongColumns = 0;
for (ii=0; ii<8; ii++) {
theLongRow = gChessBoard[ii] & 0x0ff;
theLongRow = theLongRow << ii;
theLongColumns |= theLongRow;
}
//* now count the bits
bitCount = 0;
for (ii=0; ii<16; ii++) {
if ((theLongColumns & 0x01) == 0x01) {
bitCount++;
}
theLongColumns = theLongColumns >> 1;
}
if (bitCount != 8) {
return FALSE;
}
//* we now have to check the other diagonal
theLongColumns = 0;
for (ii=0; ii<8; ii++) {
theLongRow = gChessBoard[ii] & 0x0ff;
theLongRow = theLongRow << 8;
theLongRow = theLongRow >> ii;
theLongColumns |= theLongRow;
}
//* now count the bits
bitCount = 0;
for (ii=0; ii<16; ii++) {
if ((theLongColumns & 0x01) == 0x01) {
bitCount++;
}
theLongColumns = theLongColumns >> 1;
}
if (bitCount != 8) {
return FALSE;
}
return TRUE;
}
int CheckForDone(void)
{
int ii;
int weAreDone;
int theRow;
weAreDone = FALSE;
//* we know we have 1 in each row,
//* Check for 1 in each column
theRow = 0;
for (ii=0; ii<8; ii++) {
theRow |= gChessBoard[ii];
}
if (theRow == 0x01) {
weAreDone = TRUE;
}
return weAreDone;
}
void RotateQueens(void)
{
int ii;
int keepGoing;
int theRow;
ii = 0;
keepGoing = TRUE;
while (keepGoing && (ii < 8)) {
theRow = gChessBoard[ii] & 0x0ff;
theRow = (theRow >> 1) & 0x0ff;
if (theRow != 0) {
gChessBoard[ii] = theRow;
keepGoing = FALSE;
} else {
gChessBoard[ii] = 0x080;
}
ii++;
}
}
void PrintChessBoard(void)
{
int ii;
int jj;
int theRow;
char textString[32];
printf("\nLoop= %d\n", gLoopCounter);
printf("Solution count= %d\n", gValidCount);
printf("+----------------+\n");
for (ii=0; ii<8; ii++) {
theRow = gChessBoard[ii];
printf("|");
for (jj=0; jj<8; jj++) {
if (theRow & 0x080) {
printf("Q ");
} else {
printf(". ");
}
theRow = theRow << 1;
}
printf("|\n");
}
printf("+----------------+\n");
}
int main(void)
{
int ii;
printf("\nEight Queens brute force");
printf("\n************************\n");
//* put the 8 queens on the board, 1 in each row
for (ii=0; ii<8; ii++) {
gChessBoard[ii] = 0x080;
}
PrintChessBoard();
gLoopCounter = 0;
gValidCount = 0;
while (1) {
gLoopCounter++;
if (CheckCurrentBoard()) {
gValidCount++;
PrintChessBoard();
} else if ((gLoopCounter % 1000) == 0) {
//PrintChessBoard();
}
RotateQueens();
if (CheckForDone()) {
//int elapsedSeconds;
//int elapsedMinutes;
//int elapsedHours;
//elapsedSeconds = millis() / 1000;
//elapsedMinutes = elapsedSeconds / 60;
//elapsedHours = elapsedMinutes / 60;
printf("----------------------------------\n");
printf("All done\n");
PrintChessBoard();
printf("----------------------------------\n");
//Serial.print("total seconds=");
//Serial.println(elapsedSeconds);
//Serial.print("hours=");
//Serial.println(elapsedHours);
//Serial.print("minutes=");
//Serial.println(elapsedMinutes % 60);
//Serial.print("seconds=");
//Serial.println(elapsedSeconds % 60);
return (1);
}
}
}

129
share/examples/c/rain.c Normal file
View File

@@ -0,0 +1,129 @@
/*
* Example of using termcap library for SmallC.
* 11/3/1980 EPS/CITHEP
*
* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#define CO 80 /* number of columns */
#define LI 24 /* number of lines */
#define CL "\33[H\33[J" /* clear the screen */
#define CM "\33[%u;%uH" /* move the cursor to row, column */
#define BC "\b" /* move cursor left */
#define DN "\33[B" /* move cursor down */
#define ND " " /* move cursor right */
int xpos[5], ypos[5];
char outbuf[BUFSIZ];
void moveto(int col, int row)
{
printf(CM, row, col);
}
void onsig(int n)
{
moveto(0, LI - 1);
fflush(stdout);
_exit(0);
}
int main(void)
{
int x, y, j;
setbuf(stdout, outbuf);
for (j = SIGHUP; j <= SIGTERM; j++)
if (signal(j, SIG_IGN) != SIG_IGN)
signal(j, onsig);
fputs(CL, stdout);
fflush(stdout);
for (j = 5; --j >= 0; ) {
xpos[j] = 2 + rand() % (CO - 4);
ypos[j] = 2 + rand() % (LI - 4);
}
for (j = 0; ; ) {
x = 2 + rand() % (CO - 4);
y = 2 + rand() % (LI - 4);
moveto(x, y);
putchar('.');
moveto(xpos[j], ypos[j]);
putchar('o');
if (j == 0)
j = 4;
else
--j;
moveto(xpos[j], ypos[j]);
putchar('O');
if (j == 0)
j = 4;
else
--j;
moveto(xpos[j], ypos[j]-1);
putchar('-');
fputs(DN, stdout);
fputs(BC, stdout);
fputs(BC, stdout);
fputs("|.|", stdout);
fputs(DN, stdout);
fputs(BC, stdout);
fputs(BC, stdout);
putchar('-');
if (j == 0)
j = 4;
else
--j;
moveto(xpos[j], ypos[j]-2);
putchar('-');
fputs(DN, stdout);
fputs(BC, stdout);
fputs(BC, stdout);
fputs("/ \\", stdout);
moveto(xpos[j]-2, ypos[j]);
fputs("| O |", stdout);
moveto(xpos[j]-1, ypos[j]+1);
fputs("\\ /", stdout);
fputs(DN, stdout);
fputs(BC, stdout);
fputs(BC, stdout);
putchar('-');
if (j == 0)
j = 4;
else
--j;
moveto(xpos[j], ypos[j]-2);
putchar(' ');
fputs(DN, stdout);
fputs(BC, stdout);
fputs(BC, stdout);
putchar(' ');
fputs(ND, stdout);
putchar(' ');
moveto(xpos[j]-2, ypos[j]);
putchar(' ');
fputs(ND, stdout);
putchar(' ');
fputs(ND, stdout);
putchar(' ');
moveto(xpos[j]-1, ypos[j]+1);
putchar(' ');
fputs(ND, stdout);
putchar(' ');
fputs(DN, stdout);
fputs(BC, stdout);
fputs(BC, stdout);
putchar(' ');
xpos[j] = x;
ypos[j] = y;
fflush(stdout);
usleep(100000);
}
}

214
share/examples/c/test1.c Normal file
View File

@@ -0,0 +1,214 @@
#include <stdio.h>
int ga[5];
int main(void)
{
int a, b, c, d;
int arr[5];
int *pi;
char arrc[5];
char *pic;
int s1, s2;
int z;
int t;
int *pip;
int *picp;
int e1, e2;
ga[0] = 10;
ga[1] = 20;
ga[2] = 30;
ga[3] = 40;
ga[4] = 50;
a = 21;
b = 31;
c = 71;
d = 82;
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
pi = &arr[0];
arrc[0] = 13;
arrc[1] = 23;
arrc[2] = 33;
arrc[3] = 43;
arrc[4] = 53;
pic = &arrc[0];
printf(" 21 + 31 = %d (52)\n", a + b);
printf(" 21 - 31 = %d (-10)\n", a - b);
printf(" 21 & 71 = %d (5)\n", a & c);
printf(" 21 | 82 = %d (87)\n", a | d);
printf(" 21 ^ 82 = %d (71)\n", a ^ d);
printf(" 21 * 82 = %d (1722)\n", a * d);
printf(" 82 %% 21 = %d (19)\n", d % a);
printf(" 82 / 21 = %d (3)\n", d / a);
printf(" *pi = %d (10)\n", *pi);
printf(" *pi + 1 = %d (11)\n", *pi + 1);
printf(" *(pi + 1) = %d (20)\n", *(pi + 1));
printf("&arr[3] - &arr[0] = %d (3)\n", &arr[3] - &arr[0]);
printf(" arr[3]-arr[0] = %d (30)\n", arr[3] - arr[0]);
printf(" arr[3]+arr[0] = %d (50)\n", arr[3] + arr[0]);
printf(" &ga[3] - &ga[0] = %d (3)\n", &ga[3] - &ga[0]);
printf(" ga[3]-ga[0] = %d (30)\n", ga[3] - ga[0]);
printf(" ga[3]+ga[0] = %d (50)\n", ga[3] + ga[0]);
printf("\n");
printf(" *pic = %d (13)\n", *pic);
printf(" *pic + 1 = %d (14)\n", *pic+1);
printf(" *(pic + 1) = %d (23)\n", *(pic+1));
printf("&arrc[3] - &arrc[0] = %d (3)\n", &arrc[3]-&arrc[0]);
printf("\n");
s1 = 3;
s2 = -200;
printf(" 82 << 3 = %d (656)\n", d << s1);
printf(" 82 >> 3 = %d (10)\n", d >> s1);
printf("-200 >> 3 = %d (-25)\n", s2 >> s1);
printf("-200 << 3 = %d (-1600)\n", s2 << s1);
printf("\n");
printf("-s1 = %d (-3)\n", -s1);
printf("-s2 = %d (200)\n", -s2);
printf("\n");
printf("~82 = %d (-83)\n", ~d);
printf("\n");
z = 0;
printf("!82 = %d (0)\n", !d);
printf(" !0 = %d (1)\n", !z);
printf("\n");
printf(" 0 && 0 = %d (0)\n", z && z);
printf(" 0 && 21 = %d (0)\n", z && a);
printf(" 3 && 21 = %d (1)\n", s1 && a);
printf("21 && 3 = %d (1)\n", a && s1);
printf("\n");
printf(" 0 || 0 = %d (0)\n", z || z);
printf(" 0 || 21 = %d (1)\n", z || a);
printf(" 3 || 21 = %d (1)\n", s1 || a);
printf("21 || 3 = %d (1)\n", a || s1);
printf("\n");
pi = 4;
printf("pi++ = %d (4)\n", pi++);
printf(" pi = %d (8)\n", pi);
printf("++pi = %d (12)\n", ++pi);
printf("pi-- = %d (12)\n", pi--);
printf(" pi = %d (8)\n", pi);
printf("--pi = %d (4)\n", --pi);
printf("\n");
pic = 4;
printf("pic++ = %d (4)\n", pic++);
printf(" pic = %d (5)\n", pic);
printf("++pic = %d (6)\n", ++pic);
printf("pic-- = %d (6)\n", pic--);
printf(" pic = %d (5)\n", pic);
printf("--pic = %d (4)\n", --pic);
printf("\n");
t = 4;
printf("t++ = %d (4)\n", t++);
printf(" t = %d (5)\n", t);
printf("++t = %d (6)\n", ++t);
printf("t-- = %d (6)\n", t--);
printf(" t = %d (5)\n", t);
printf("--t = %d (4)\n", --t);
printf("\n");
t = 4;
printf(" t==4 = %d (1)\n", t == 4);
printf(" t==3 = %d (0)\n", t == 3);
printf(" t==5 = %d (0)\n", t == 5);
t = -4;
printf("t==-4 = %d (1)\n", t == -4);
printf("t==-3 = %d (0)\n", t == -3);
printf("t==-5 = %d (0)\n", t == -5);
printf(" t==4 = %d (0)\n", t == 4);
printf(" t==3 = %d (0)\n", t == 3);
printf(" t==5 = %d (0)\n", t == 5);
printf("\n");
t = 4;
printf(" t!=4 = %d (0)\n", t != 4);
printf(" t!=3 = %d (1)\n", t != 3);
printf(" t!=5 = %d (1)\n", t != 5);
t = -4;
printf("t!=-4 = %d (0)\n", t != -4);
printf("t!=-3 = %d (1)\n", t != -3);
printf("t!=-5 = %d (1)\n", t != -5);
printf(" t!=4 = %d (1)\n", t != 4);
printf(" t!=3 = %d (1)\n", t != 3);
printf(" t!=5 = %d (1)\n", t != 5);
printf("\n");
t = 4;
printf(" t<4 = %d (0)\n", t < 4);
printf(" t<3 = %d (0)\n", t < 3);
printf(" t<5 = %d (1)\n", t < 5);
printf("t<-1 = %d (0)\n", t < -1);
printf("\n");
printf(" t<=4 = %d (1)\n", t <= 4);
printf(" t<=3 = %d (0)\n", t <= 3);
printf(" t<=5 = %d (1)\n", t <= 5);
printf("t<=-1 = %d (0)\n", t <= -1);
printf("\n");
t = 4;
printf(" t>4 = %d (0)\n", t > 4);
printf(" t>3 = %d (1)\n", t > 3);
printf(" t>5 = %d (0)\n", t > 5);
printf("t>-1 = %d (1)\n", t > -1);
printf("\n");
printf(" t>=4 = %d (1)\n", t >= 4);
printf(" t>=3 = %d (1)\n", t >= 3);
printf(" t>=5 = %d (0)\n", t >= 5);
printf("t>=-1 = %d (1)\n", t >= -1);
printf("\n");
pi = -100;
printf(" pi<4 = %d (0)\n", pi < (int*)4);
printf(" pi<3 = %d (0)\n", pi < (int*)3);
printf("pi<-100 = %d (0)\n", pi < (int*)-100);
printf(" pi<-1 = %d (1)\n", pi < (int*)-1);
printf("\n");
printf(" pi<=4 = %d (0)\n", pi <= (int*)4);
printf(" pi<=3 = %d (0)\n", pi <= (int*)3);
printf("pi<=-100 = %d (1)\n", pi <= (int*)-100);
printf(" pi<=-1 = %d (1)\n", pi <= (int*)-1);
printf("\n");
pi = -100;
printf(" pi>4 = %d (1)\n", pi > (int*)4);
printf(" pi>3 = %d (1)\n", pi > (int*)3);
printf("pi>-100 = %d (0)\n", pi > (int*)-100);
printf(" pi>-1 = %d (0)\n", pi > (int*)-1);
printf("\n");
printf(" pi>=4 = %d (1)\n", pi >= (int*)4);
printf(" pi>=3 = %d (1)\n", pi >= (int*)3);
printf("pi>=-100 = %d (1)\n", pi >= (int*)-100);
printf(" pi>=-1 = %d (0)\n", pi >= (int*)-1);
printf("\n");
pi = &arr[0];
pip = &arr[3];
printf(" *pip - *pi: %d (30)\n", *pip - *pi);
printf(" pip - pi: %d (3)\n", pip - pi);
printf(" *pip: %d (40)\n", *pip);
printf(" *(pip - 3): %d (10)\n", *(pip - 3));
printf(" *&arr[3]: %d (40)\n", *&arr[3]);
printf("*(&arr[3] - 3): %d (10)\n", *(&arr[3]-3));
}

128
share/examples/c/test2.c Normal file
View File

@@ -0,0 +1,128 @@
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
int aaa;
int bbb;
int ccc;
char gc;
char gbuffer[3];
int gibuffer[4];
int main(void)
{
char b;
int la;
unsigned int u1, u2;
int s1, s2;
unsigned char uc1, uc2;
char sc1, sc2;
int fd;
char buffer[6];
int ibuffer[7];
printf(" sizeof(uc1): %d 1\n", sizeof(uc1));
printf(" sizeof(sc1): %d 1\n", sizeof(sc1));
printf(" sizeof(u1): %d 4\n", sizeof(u1));
printf(" sizeof(s1): %d 4\n", sizeof(s1));
printf(" sizeof(aaa): %d 4\n", sizeof(aaa));
printf(" sizeof(bbb): %d 4\n", sizeof(bbb));
printf(" sizeof(gc): %d 1\n", sizeof(gc));
printf(" sizeof(buffer): %d 6\n", sizeof(buffer));
printf(" sizeof(ibuffer): %d 28\n", sizeof(ibuffer));
printf(" sizeof(char): %d 1\n", sizeof(char));
printf(" sizeof(int): %d 4\n", sizeof(int));
printf(" sizeof(gbuffer): %d 3\n", sizeof(gbuffer));
printf(" sizeof(gibuffer): %d 16\n", sizeof(gibuffer));
// sizeof(ibuffer[0]) is not supported, so the following can be used...
printf("sizeof(ibuffer)/sizeof(int): %d 7\n", sizeof(ibuffer)/sizeof(int));
aaa = 1;
bbb = 2;
la = 4;
printf("%d 1\n", aaa);
printf("%d 2\n", bbb);
printf("%d 4\n", la);
uc1 = 0x80;
sc1 = 0x80;
s1 = uc1;
s2 = sc1;
printf("unsigned char (0x80) -> int: %d 128\n", s1);
printf(" signed char (0x80) -> int: %d -128\n", s2);
u1 = uc1;
u2 = sc1;
printf("unsigned char (0x80) -> unsigned: %d 128\n", u1);
printf(" signed char (0x80) -> unsigned: %d -128\n", u2);
la = errno;
printf("errno: %d 0\n", la);
write(1, "abcd ", 5);
la = errno;
printf("errno after good write call: %d 0\n", la);
write(10, "abcde", 5);
la = errno;
printf("errno after bad write call: %d 9\n", la);
write(1, "abcd ", 5);
la = errno;
printf("good write after failed should not overwrite errno: %d 9\n", la);
errno = 0;
write(1, "abcd ", 5);
la = errno;
printf("good write after errno set to zero: %d 0\n", la);
la = write(1, "abcd ", 5);
printf("write() return: %d 5\n", la);
la = write(10, "abcd ", 5);
printf("write(bad fd) return: %d -1\n", la);
fd = open("/a.txt", O_WRONLY | O_CREAT, 0666);
if (fd != -1) {
printf("open success\n");
la = write(fd, "abcd\n", 5);
if (la == 5) printf("write success\n"); else printf("write failed\n");
la = close(fd);
if (la != -1) printf("close success\n"); else printf("close failed\n");
} else {
printf("open failed\n");
}
buffer[0] = 0;
buffer[1] = 0;
buffer[2] = 0;
buffer[3] = 0;
buffer[4] = 0;
buffer[5] = 0;
fd = open("/a.txt", O_RDONLY, 0666);
if (fd != -1) {
printf("open success\n");
la = read(fd, buffer, 5);
printf(buffer);
if (la == 5) printf("read success\n"); else printf("read failed\n");
la = close(fd);
if (la != -1) printf("close success\n"); else printf("close failed\n");
} else {
printf("open failed\n");
}
if (buffer[0] != 'a') printf("data0 readback from file MISMATCH\n");
if (buffer[1] != 'b') printf("data1 readback from file MISMATCH\n");
if (buffer[2] != 'c') printf("data2 readback from file MISMATCH\n");
if (buffer[3] != 'd') printf("data3 readback from file MISMATCH\n");
if (buffer[4] != '\n') printf("data4 readback from file MISMATCH\n");
if (buffer[0] != 'a' || buffer[1] != 'b' || buffer[2] != 'c' ||
buffer[3] != 'd' || buffer[4] != '\n') {
printf("data readback from file MISMATCH\n");
} else {
printf("data readback from file OK\n");
}
}

51
share/examples/c/test3.c Normal file
View File

@@ -0,0 +1,51 @@
#include <stdio.h>
void printt(int t, char* str);
int main(void)
{
int t;
t = 0;
if (t) printt(t, "failure"); else printt(t, "success");
t = 1;
if (t) printt(t, "success"); else printt(t, "failure");
t = 8;
if (t) printt(t, "success"); else printt(t, "failure");
t = -2;
if (t) printt(t, "success"); else printt(t, "failure");
printf("\n");
t = 4;
printf("switch test: ");
switch (t) {
case 3:
printf("failure");
break;
case 4:
printf("success");
break;
case 5:
printf("failure");
break;
}
printf("\n");
printf("switch fallthrough test: ");
switch (t) {
case 3:
printf("failure");
break;
case 4:
printf("OKSOFAR: ");
case 5:
printf("success if oksofar printed before this in caps");
break;
}
printf("\n");
}
void printt(int t, char* str)
{
printf("bool test on value %d %s\n", t, str);
}

666
share/examples/c/tetris.c Normal file
View File

@@ -0,0 +1,666 @@
/*
* Tetris (C) Copyright 1995, Vadim Antonov
* Port to RetroBSD (C) 2015, Serge Vakulenko
*
* This program is designed to run on Olimex Duinomite board
* with SainSmart Graphic LCD4884 shield, modified for 3.3V.
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for any purpose and without fee is hereby
* granted, provided that the above copyright notice appear in all
* copies and that both that the copyright notice and this
* permission notice and warranty disclaimer appear in supporting
* documentation, and that the name of the author not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
*
* The author disclaim all warranties with regard to this
* software, including all implied warranties of merchantability
* and fitness. In no event shall the author be liable for any
* special, indirect or consequential damages or any damages
* whatsoever resulting from loss of use, data or profits, whether
* in an action of contract, negligence or other tortious action,
* arising out of or in connection with the use or performance of
* this software.
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/gpio.h>
#define PITWIDTH 12
#define PITDEPTH 21
#define NSHAPES 7
#define NBLOCKS 5
#define FIN 999
typedef struct {
int x, y;
} coord_t;
typedef struct {
int dx, dy;
coord_t p[NBLOCKS];
} shape_t;
const shape_t shape [NSHAPES] = {
/* OOOO */ { 0, 3, { {0,0}, {0,1}, {0,2}, {0,3}, {FIN,FIN} } },
/* O */ { 1, 2, { {0,0}, {1,0}, {1,1}, {1,2}, {FIN,FIN} } },
/* OOO */
/* O */ { 1, 2, { {0,1}, {1,0}, {1,1}, {1,2}, {FIN,FIN} } },
/* OOO */
/* O */ { 1, 2, { {0,2}, {1,0}, {1,1}, {1,2}, {FIN,FIN} } },
/* OOO */
/* OO */ { 1, 2, { {0,0}, {0,1}, {1,1}, {1,2}, {FIN,FIN} } },
/* OO */
/* OO */ { 1, 2, { {0,1}, {0,2}, {1,0}, {1,1}, {FIN,FIN} } },
/* OO */
/* OO */ { 1, 1, { {0,0}, {0,1}, {1,0}, {1,1}, {FIN,FIN} } },
/* OO */
};
int pit [PITDEPTH+1] [PITWIDTH];
int pitcnt [PITDEPTH];
coord_t old [NBLOCKS], new [NBLOCKS], chk [NBLOCKS];
int gpio; /* File descriptor of GPIO driver. */
int adc3; /* File descriptor of ADC3 driver. */
/*-------------------------------------------------------------
* Definitions for a "digital" joystick at A0 analog input.
* Button values are determined by resistors on a board.
*/
enum {
JOYSTICK_LEFT,
JOYSTICK_SELECT,
JOYSTICK_DOWN,
JOYSTICK_RIGHT,
JOYSTICK_UP,
JOYSTICK_IDLE = -1,
};
/*
* Initialize ADC for a joystick.
*/
void joystick_init()
{
/* Open ADC driver. */
adc3 = open("/dev/adc3", 0);
if (adc3 < 0) {
perror("/dev/adc3");
exit(-1);
}
}
/*
* Get a state of joystick.
* Convert ADC value to key number.
* Input buttons are connected to a series network of resistors:
* GND - 3.3k - 1k - 620 - 330 - 2k - +3.3V
* Expected values are:
* 0 - 144 - 329 - 506 - 741 - 1023
*/
int joystick_get()
{
static const unsigned level[5] = { 72, 236, 417, 623, 882 };
unsigned input, k;
char buf[16];
if (read(adc3, buf, sizeof(buf)) <= 0) {
perror("adc");
exit(-1);
}
input = strtol(buf, 0, 10);
for (k=0; k<5; k++) {
if (input < level[k]) {
return k;
}
}
return JOYSTICK_IDLE;
}
/*-------------------------------------------------------------
* Routines for Nokia 5110 display.
* See Philips PCD8544 datasheet.
*/
#define NROW 48
#define NCOL 84
/*
* Pinout for SainSmart Graphic LCD4884 Shield.
*/
#define MASKE_LCD_SCK (1 << 2) /* signal D2, pin RE2 */
#define MASKE_LCD_MOSI (1 << 3) /* signal D3, pin RE3 */
#define MASKE_LCD_DC (1 << 4) /* signal D4, pin RE4 */
#define MASKE_LCD_CS (1 << 5) /* signal D5, pin RE5 */
#define MASKE_LCD_RST (1 << 6) /* signal D6, pin RE6 */
#define MASKE_LCD_BL (1 << 7) /* signal D7, pin RE7 */
static unsigned char gpanel_screen [NROW*NCOL/8];
int gpanel_row, gpanel_col;
static void lcd_cs(unsigned on)
{
if (on) {
ioctl(gpio, GPIO_PORTE | GPIO_SET, MASKE_LCD_CS);
} else {
ioctl(gpio, GPIO_PORTE | GPIO_CLEAR, MASKE_LCD_CS);
}
}
static void lcd_rst(unsigned on)
{
if (on) {
ioctl(gpio, GPIO_PORTE | GPIO_SET, MASKE_LCD_RST);
} else {
ioctl(gpio, GPIO_PORTE | GPIO_CLEAR, MASKE_LCD_RST);
}
}
static void lcd_dc(unsigned on)
{
if (on) {
ioctl(gpio, GPIO_PORTE | GPIO_SET, MASKE_LCD_DC);
} else {
ioctl(gpio, GPIO_PORTE | GPIO_CLEAR, MASKE_LCD_DC);
}
}
static void lcd_bl(unsigned on)
{
if (on) {
ioctl(gpio, GPIO_PORTE | GPIO_SET, MASKE_LCD_BL);
} else {
ioctl(gpio, GPIO_PORTE | GPIO_CLEAR, MASKE_LCD_BL);
}
}
static void lcd_mosi(unsigned on)
{
if (on) {
ioctl(gpio, GPIO_PORTE | GPIO_SET, MASKE_LCD_MOSI);
} else {
ioctl(gpio, GPIO_PORTE | GPIO_CLEAR, MASKE_LCD_MOSI);
}
}
static void lcd_sck(unsigned on)
{
if (on) {
ioctl(gpio, GPIO_PORTE | GPIO_SET, MASKE_LCD_SCK);
} else {
ioctl(gpio, GPIO_PORTE | GPIO_CLEAR, MASKE_LCD_SCK);
}
}
static void lcd_write(unsigned byte, unsigned data_flag)
{
unsigned i;
lcd_cs(0);
lcd_dc(data_flag);
for (i=0; i<8; i++, byte<<=1) {
lcd_mosi(byte & 0x80); /* SDIN = bit[i] */
lcd_sck(0); /* SCLK = 0 */
lcd_sck(1); /* SCLK = 1 */
}
lcd_cs(1);
}
/*
* Set up hardware for communication to Nokia 5110 LCD Display.
* Do not clear the display.
* Leave backlight turned off.
*/
void gpanel_init()
{
gpanel_row = 0;
gpanel_col = 0;
/* Open GPIO driver. */
gpio = open("/dev/porta", 0);
if (gpio < 0) {
perror("/dev/porta");
exit(-1);
}
/*
* Set pins as outputs.
*/
ioctl(gpio, GPIO_PORTE | GPIO_CONFOUT, MASKE_LCD_SCK |
MASKE_LCD_MOSI | MASKE_LCD_DC | MASKE_LCD_CS |
MASKE_LCD_RST | MASKE_LCD_BL);
ioctl(gpio, GPIO_PORTE | GPIO_SET, MASKE_LCD_RST | MASKE_LCD_CS);
ioctl(gpio, GPIO_PORTE | GPIO_CLEAR, MASKE_LCD_SCK |
MASKE_LCD_MOSI | MASKE_LCD_DC | MASKE_LCD_BL);
/* Turn off backlight. */
lcd_bl(0);
/* Reset the display. */
lcd_rst(0);
usleep(10000); // need 1 usec
lcd_rst(1);
usleep(10000); // need 1 usec
lcd_write(0x21, 0); // Enable extended instruction set
lcd_write(0xbf, 0); // Set Vop - contrast level
lcd_write(0x04, 0); // Set temperature coefficient to 0
lcd_write(0x14, 0); // Set bias to 4
lcd_write(0x20, 0); // Back to normal instruction set
lcd_write(0x0c, 0); // Set normal mode
/* Enable backlight. */
lcd_bl(1);
}
/*
* Clear the the LCD screen.
*/
void gpanel_clear()
{
unsigned i;
/* Clear data */
lcd_write(0x40, 0);
lcd_write(0x80, 0);
for (i=0; i<NROW*NCOL/8; i++) {
gpanel_screen[i] = 0;
lcd_write(0, 1);
}
gpanel_row = 0;
gpanel_col = 0;
}
/*
* Lights a single pixel in the specified color
* at the specified x and y addresses
*/
void gpanel_pixel(int x, int y, int color)
{
unsigned char *data;
if (x >= NCOL || y >= NROW)
return;
data = &gpanel_screen [(y >> 3) * NCOL + x];
if (color)
*data |= 1 << (y & 7);
else
*data &= ~(1 << (y & 7));
lcd_write(0x40 | (y >> 3), 0);
lcd_write(0x80 | x, 0);
lcd_write(*data, 1);
}
/*
* Draw a filled rectangle in the specified color from (x1,y1) to (x2,y2).
*
* The best way to fill a rectangle is to take advantage of the "wrap-around" featute
* built into the Philips PCF8833 controller. By defining a drawing box, the memory can
* be simply filled by successive memory writes until all pixels have been illuminated.
*/
void gpanel_rect_filled(int x0, int y0, int x1, int y1, int color)
{
/* Temporary solution */
int xmin, xmax, ymin, ymax, x, y;
/* calculate the min and max for x and y directions */
if (x0 <= x1) {
xmin = x0;
xmax = x1;
} else {
xmin = x1;
xmax = x0;
}
if (y0 <= y1) {
ymin = y0;
ymax = y1;
} else {
ymin = y1;
ymax = y0;
}
for (y=ymin; y<=ymax; y++)
for (x=xmin; x<=xmax; x++)
gpanel_pixel(x, y, color);
}
/*-------------------------------------------------------------
* Output piece coordinates given its center and angle
*/
void translate(const shape_t *t, const coord_t *c, int a, coord_t *res)
{
coord_t org, tmp;
int yw, xw, i;
if (a & 1) { /* 90 deg */
xw = t->dy;
yw = t->dx;
} else {
xw = t->dx;
yw = t->dy;
}
org = *c;
org.x -= (xw + 1) / 2;
org.y -= yw / 2;
if (org.y < 0)
org.y = 0;
if (org.y + yw >= PITWIDTH && c->y <= PITWIDTH)
org.y = PITWIDTH-1 - yw;
for (i=0; t->p[i].x!=FIN; i++) {
switch (a) {
case 0:
res[i].x = t->p[i].x;
res[i].y = t->p[i].y;
break;
case 3:
res[i].x = xw - t->p[i].y;
res[i].y = t->p[i].x;
break;
case 2:
res[i].x = xw - t->p[i].x;
res[i].y = yw - t->p[i].y;
break;
case 1:
res[i].x = t->p[i].y;
res[i].y = yw - t->p[i].x;
}
res[i].x += org.x;
res[i].y += org.y;
}
res[i].x = res[i].y = FIN;
do {
xw = 0;
for (i=0; res[i+1].x!=FIN; i++) {
if (res[i].x < res[i+1].x)
continue;
if (res[i].x == res[i+1].x && res[i].y <= res[i+1].y)
continue;
xw++;
tmp = res[i];
res[i] = res[i+1];
res[i+1] = tmp;
}
} while (xw);
}
/*
* Draw the block
*/
void draw_block(int h, int w, int visible)
{
h *= 4;
w *= 4;
if (visible) {
gpanel_rect_filled(NCOL-1 - h, w, NCOL-1 - (h + 3), w + 3, 1);
} else {
gpanel_rect_filled(NCOL-1 - h, w, NCOL-1 - (h + 3), w + 3, 0);
if (h == (PITDEPTH-1)*5)
gpanel_pixel(NCOL-1 - (h + 3), w + 2, 1);
if (w == 0)
gpanel_pixel(NCOL-1 - (h + 2), w, 1);
else if (w % 16 == 12)
gpanel_pixel(NCOL-1 - (h + 2), w + 3, 1);
}
}
/*
* Move the piece
*/
void move(coord_t *old, coord_t *new)
{
for (;;) {
if (old->x == FIN) {
draw: if (new->x == FIN)
break;
if (new->x >= 0)
draw_block(new->x, new->y, 1);
new++;
continue;
}
if (new->x == FIN) {
clear: if (old->x >= 0)
draw_block(old->x, old->y, 0);
old++;
continue;
}
if (old->x > new->x)
goto draw;
if (old->x < new->x)
goto clear;
if (old->y > new->y)
goto draw;
if (old->y != new->y)
goto clear;
/* old & new at the same place */
old++;
new++;
}
}
/*
* Draw the pit
*/
void clear()
{
int h, w;
for (h=0; h<PITDEPTH; h++) {
for (w=0; w<PITWIDTH; w++) {
draw_block(h, w, 0);
pit[h][w] = 0;
}
pitcnt[h] = 0;
}
for (w=0; w<PITWIDTH; w++)
pit[PITDEPTH][w] = 1;
}
/*
* The piece reached the bottom
*/
void stopped(coord_t *c)
{
int h, nfull, w, k;
/* Count the full lines */
nfull = 0;
for (; c->x!=FIN; c++) {
if (c->x <= 0) {
/* Game over. */
clear();
return;
}
pit[c->x][c->y] = 1;
++pitcnt[c->x];
if (pitcnt[c->x] == PITWIDTH)
nfull++;
}
if (! nfull)
return;
/* Clear upper nfull lines */
for (h=0; h<nfull; h++) {
for (w=0; w<PITWIDTH; w++) {
if (pit[h][w]) {
draw_block(h, w, 0);
}
}
}
/* Move lines down */
k = nfull;
for (h=nfull; h<PITDEPTH && k>0; h++) {
if (pitcnt[h-k] == PITWIDTH) {
k--;
h--;
continue;
}
for (w=0; w<PITWIDTH; w++) {
if (pit[h][w] != pit[h-k][w]) {
draw_block(h, w, pit[h-k][w]);
}
}
}
/* Now fix the pit contents */
for (h=PITDEPTH-1; h>0; h--) {
if (pitcnt[h] != PITWIDTH)
continue;
memmove(pit[0]+PITWIDTH, pit[0], h * sizeof(pit[0]));
memset(pit[0], 0, sizeof(pit[0]));
memmove(pitcnt+1, pitcnt, h * sizeof(pitcnt[0]));
pitcnt[0] = 0;
h++;
}
}
int main()
{
int ptype; /* Piece type */
int angle, anew; /* Angle */
int msec; /* Timeout */
coord_t c, cnew, *cp;
unsigned up_pressed = 0, left_pressed = 0;
unsigned right_pressed = 0, down_pressed = 0;
joystick_init();
gpanel_init();
gpanel_clear();
/* Draw the pit */
clear();
newpiece:
ptype = rand() % NSHAPES;
angle = rand() % 3;
c.y = PITWIDTH/2 - 1;
for (c.x= -2; ; c.x++) {
translate(&shape[ptype], &c, angle, new);
for (cp=new; cp->x!=FIN; cp++) {
if (cp->x >= 0)
goto ok;
}
}
ok:
/* Draw new piece */
for (cp=new; cp->x!=FIN; cp++) {
if (cp->x >= 0) {
draw_block(cp->x, cp->y, 1);
}
}
memcpy(old, new, sizeof old);
msec = 500;
for (;;) {
cnew = c;
anew = angle;
if (msec <= 0) {
/* Timeout: move down */
msec = 500;
cnew.x++;
translate(&shape[ptype], &cnew, anew, chk);
for (cp=chk; cp->x!=FIN; cp++) {
if (cp->x >= 0 && pit[cp->x][cp->y]) {
stopped(new);
goto newpiece;
}
}
goto check;
}
int key = joystick_get();
if (key != JOYSTICK_RIGHT)
right_pressed = 0;
else if (! right_pressed) {
right_pressed = 1;
/* Right: rotate */
if (--anew < 0)
anew = 3;
translate(&shape[ptype], &cnew, anew, chk);
goto check;
}
if (key != JOYSTICK_UP)
up_pressed = 0;
else if (! up_pressed) {
up_pressed = 1;
/* Up: move left. */
if (cnew.y <= 0)
continue;
cnew.y--;
translate(&shape[ptype], &cnew, anew, chk);
goto check;
}
if (key != JOYSTICK_DOWN)
down_pressed = 0;
else if (! down_pressed) {
down_pressed = 1;
/* Down: move right */
if (cnew.y >= PITWIDTH-1)
continue;
cnew.y++;
translate(&shape[ptype], &cnew, anew, chk);
goto check;
}
if (key != JOYSTICK_LEFT)
left_pressed = 0;
else if (! left_pressed) {
left_pressed = 1;
/* Right: drop */
for (;;) {
cnew.x++;
translate(&shape[ptype], &cnew, anew, chk);
for (cp=chk; cp->x!=FIN; cp++) {
if (cp->x >= 0 && pit[cp->x][cp->y]) {
cnew.x--;
translate(&shape[ptype], &cnew, anew, chk);
move(new, chk);
stopped(chk);
goto newpiece;
}
}
}
}
usleep(10000);
msec -= 10;
continue;
check:
for (cp=chk; cp->x!=FIN; cp++) {
if (cp->y < 0 || cp->y >= PITWIDTH)
goto done;
}
for (cp=chk; cp->x!=FIN; cp++) {
if (cp->x >= 0 && pit[cp->x][cp->y])
goto done;
}
c = cnew;
angle = anew;
memcpy(old, new, sizeof old);
memcpy(new, chk, sizeof new);
move(old, new);
done: ;
}
}

View File

@@ -0,0 +1,15 @@
TOPSRC = $(shell cd ../../..; pwd)
include $(TOPSRC)/target.mk
CFLAGS += -Werror
all: cplus
cplus: cplus.o
${CXX} ${LDFLAGS} -nostdlib -o cplus.elf cplus.o ${LIBS}
${OBJDUMP} -S cplus.elf > cplus.dis
${SIZE} cplus.elf
${ELF2AOUT} cplus.elf $@
clean:
rm -f *.o *.elf ${MAN} cplus *.elf *.dis tags *~

Some files were not shown because too many files have changed in this diff Show More