| ofs | hex dump | ascii |
|---|
| 0000 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | proxylab-handout/............... |
| 0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0060 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000755.0006626.0000144.0000 |
| 0080 | 30 30 30 30 30 30 30 00 31 33 35 36 33 33 31 30 36 34 35 00 30 31 32 33 37 31 00 20 35 00 00 00 | 0000000.13563310645.012371..5... |
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 0120 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0200 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 4d 61 6b 65 66 69 6c 65 00 00 00 00 00 00 00 | proxylab-handout/Makefile....... |
| 0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 0280 | 30 30 30 31 34 37 33 00 31 32 36 35 34 37 34 32 30 34 31 00 30 31 34 30 33 35 00 20 30 00 00 00 | 0001473.12654742041.014035..0... |
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0300 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 0320 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0400 | 23 20 4d 61 6b 65 66 69 6c 65 20 66 6f 72 20 50 72 6f 78 79 20 4c 61 62 20 0a 23 0a 23 20 59 6f | #.Makefile.for.Proxy.Lab..#.#.Yo |
| 0420 | 75 20 6d 61 79 20 6d 6f 64 69 66 79 20 74 68 69 73 20 66 69 6c 65 20 61 6e 79 20 77 61 79 20 79 | u.may.modify.this.file.any.way.y |
| 0440 | 6f 75 20 6c 69 6b 65 20 28 65 78 63 65 70 74 20 66 6f 72 20 74 68 65 20 68 61 6e 64 69 6e 0a 23 | ou.like.(except.for.the.handin.# |
| 0460 | 20 72 75 6c 65 29 2e 20 59 6f 75 20 69 6e 73 74 72 75 63 74 6f 72 20 77 69 6c 6c 20 74 79 70 65 | .rule)..You.instructor.will.type |
| 0480 | 20 22 6d 61 6b 65 22 20 6f 6e 20 79 6f 75 72 20 73 70 65 63 69 66 69 63 20 4d 61 6b 65 66 69 6c | ."make".on.your.specific.Makefil |
| 04a0 | 65 20 74 6f 0a 23 20 62 75 69 6c 64 20 79 6f 75 72 20 70 72 6f 78 79 20 66 72 6f 6d 20 73 6f 75 | e.to.#.build.your.proxy.from.sou |
| 04c0 | 72 63 65 73 2e 0a 0a 43 43 20 3d 20 67 63 63 0a 43 46 4c 41 47 53 20 3d 20 2d 67 20 2d 57 61 6c | rces...CC.=.gcc.CFLAGS.=.-g.-Wal |
| 04e0 | 6c 0a 4c 44 46 4c 41 47 53 20 3d 20 2d 6c 70 74 68 72 65 61 64 0a 0a 61 6c 6c 3a 20 70 72 6f 78 | l.LDFLAGS.=.-lpthread..all:.prox |
| 0500 | 79 0a 0a 63 73 61 70 70 2e 6f 3a 20 63 73 61 70 70 2e 63 20 63 73 61 70 70 2e 68 0a 09 24 28 43 | y..csapp.o:.csapp.c.csapp.h..$(C |
| 0520 | 43 29 20 24 28 43 46 4c 41 47 53 29 20 2d 63 20 63 73 61 70 70 2e 63 0a 0a 70 72 6f 78 79 2e 6f | C).$(CFLAGS).-c.csapp.c..proxy.o |
| 0540 | 3a 20 70 72 6f 78 79 2e 63 20 63 73 61 70 70 2e 68 0a 09 24 28 43 43 29 20 24 28 43 46 4c 41 47 | :.proxy.c.csapp.h..$(CC).$(CFLAG |
| 0560 | 53 29 20 2d 63 20 70 72 6f 78 79 2e 63 0a 0a 70 72 6f 78 79 3a 20 70 72 6f 78 79 2e 6f 20 63 73 | S).-c.proxy.c..proxy:.proxy.o.cs |
| 0580 | 61 70 70 2e 6f 0a 09 24 28 43 43 29 20 24 28 43 46 4c 41 47 53 29 20 70 72 6f 78 79 2e 6f 20 63 | app.o..$(CC).$(CFLAGS).proxy.o.c |
| 05a0 | 73 61 70 70 2e 6f 20 2d 6f 20 70 72 6f 78 79 20 24 28 4c 44 46 4c 41 47 53 29 0a 0a 23 20 43 72 | sapp.o.-o.proxy.$(LDFLAGS)..#.Cr |
| 05c0 | 65 61 74 65 73 20 61 20 74 61 72 62 61 6c 6c 20 69 6e 20 2e 2e 2f 70 72 6f 78 79 6c 61 62 2d 68 | eates.a.tarball.in.../proxylab-h |
| 05e0 | 61 6e 64 69 6e 2e 74 61 72 20 74 68 61 74 20 79 6f 75 20 63 61 6e 20 74 68 65 6e 0a 23 20 68 61 | andin.tar.that.you.can.then.#.ha |
| 0600 | 6e 64 20 69 6e 2e 20 44 4f 20 4e 4f 54 20 4d 4f 44 49 46 59 20 54 48 49 53 21 0a 68 61 6e 64 69 | nd.in..DO.NOT.MODIFY.THIS!.handi |
| 0620 | 6e 3a 0a 09 28 6d 61 6b 65 20 63 6c 65 61 6e 3b 20 63 64 20 2e 2e 3b 20 74 61 72 20 63 76 66 20 | n:..(make.clean;.cd...;.tar.cvf. |
| 0640 | 24 28 55 53 45 52 29 2d 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 69 6e 2e 74 61 72 20 70 72 6f 78 | $(USER)-proxylab-handin.tar.prox |
| 0660 | 79 6c 61 62 2d 68 61 6e 64 6f 75 74 20 2d 2d 65 78 63 6c 75 64 65 20 74 69 6e 79 20 2d 2d 65 78 | ylab-handout.--exclude.tiny.--ex |
| 0680 | 63 6c 75 64 65 20 6e 6f 70 2d 73 65 72 76 65 72 2e 70 79 20 2d 2d 65 78 63 6c 75 64 65 20 70 72 | clude.nop-server.py.--exclude.pr |
| 06a0 | 6f 78 79 20 2d 2d 65 78 63 6c 75 64 65 20 64 72 69 76 65 72 2e 73 68 20 2d 2d 65 78 63 6c 75 64 | oxy.--exclude.driver.sh.--exclud |
| 06c0 | 65 20 70 6f 72 74 2d 66 6f 72 2d 75 73 65 72 2e 70 6c 20 2d 2d 65 78 63 6c 75 64 65 20 66 72 65 | e.port-for-user.pl.--exclude.fre |
| 06e0 | 65 2d 70 6f 72 74 2e 73 68 20 2d 2d 65 78 63 6c 75 64 65 20 22 2e 2a 22 29 0a 0a 63 6c 65 61 6e | e-port.sh.--exclude.".*")..clean |
| 0700 | 3a 0a 09 72 6d 20 2d 66 20 2a 7e 20 2a 2e 6f 20 70 72 6f 78 79 20 63 6f 72 65 20 2a 2e 74 61 72 | :..rm.-f.*~.*.o.proxy.core.*.tar |
| 0720 | 20 2a 2e 7a 69 70 20 2a 2e 67 7a 69 70 20 2a 2e 62 7a 69 70 20 2a 2e 67 7a 0a 0a 00 00 00 00 00 | .*.zip.*.gzip.*.bzip.*.gz....... |
| 0740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0800 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 52 45 41 44 4d 45 00 00 00 00 00 00 00 00 00 | proxylab-handout/README......... |
| 0820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0860 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 0880 | 30 30 30 32 35 37 36 00 31 32 36 35 34 37 33 37 34 35 34 00 30 31 33 32 37 36 00 20 30 00 00 00 | 0002576.12654737454.013276..0... |
| 08a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0900 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 0920 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 0940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 09a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 09c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 09e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0a00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
| 0a20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
| 0a40 | 23 23 23 23 0a 23 20 43 53 3a 41 50 50 20 50 72 6f 78 79 20 4c 61 62 0a 23 0a 23 20 53 74 75 64 | ####.#.CS:APP.Proxy.Lab.#.#.Stud |
| 0a60 | 65 6e 74 20 53 6f 75 72 63 65 20 46 69 6c 65 73 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ent.Source.Files.############### |
| 0a80 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
| 0aa0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 54 68 69 73 20 64 69 72 65 | #####################..This.dire |
| 0ac0 | 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 66 69 6c 65 73 20 79 6f 75 20 77 69 6c | ctory.contains.the.files.you.wil |
| 0ae0 | 6c 20 6e 65 65 64 20 66 6f 72 20 74 68 65 20 43 53 3a 41 50 50 20 50 72 6f 78 79 0a 4c 61 62 2e | l.need.for.the.CS:APP.Proxy.Lab. |
| 0b00 | 0a 0a 70 72 6f 78 79 2e 63 0a 63 73 61 70 70 2e 68 0a 63 73 61 70 70 2e 63 0a 20 20 20 20 54 68 | ..proxy.c.csapp.h.csapp.c.....Th |
| 0b20 | 65 73 65 20 61 72 65 20 73 74 61 72 74 65 72 20 66 69 6c 65 73 2e 20 20 63 73 61 70 70 2e 63 20 | ese.are.starter.files...csapp.c. |
| 0b40 | 61 6e 64 20 63 73 61 70 70 2e 68 20 61 72 65 20 64 65 73 63 72 69 62 65 64 20 69 6e 0a 20 20 20 | and.csapp.h.are.described.in.... |
| 0b60 | 20 79 6f 75 72 20 74 65 78 74 62 6f 6f 6b 2e 20 0a 0a 20 20 20 20 59 6f 75 20 6d 61 79 20 6d 61 | .your.textbook........You.may.ma |
| 0b80 | 6b 65 20 61 6e 79 20 63 68 61 6e 67 65 73 20 79 6f 75 20 6c 69 6b 65 20 74 6f 20 74 68 65 73 65 | ke.any.changes.you.like.to.these |
| 0ba0 | 20 66 69 6c 65 73 2e 20 20 41 6e 64 20 79 6f 75 20 6d 61 79 0a 20 20 20 20 63 72 65 61 74 65 20 | .files...And.you.may.....create. |
| 0bc0 | 61 6e 64 20 68 61 6e 64 69 6e 20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 66 69 6c 65 73 20 | and.handin.any.additional.files. |
| 0be0 | 79 6f 75 20 6c 69 6b 65 2e 0a 0a 20 20 20 20 50 6c 65 61 73 65 20 75 73 65 20 60 70 6f 72 74 2d | you.like.......Please.use.`port- |
| 0c00 | 66 6f 72 2d 75 73 65 72 2e 70 6c 27 20 6f 72 20 27 66 72 65 65 2d 70 6f 72 74 2e 73 68 27 20 74 | for-user.pl'.or.'free-port.sh'.t |
| 0c20 | 6f 20 67 65 6e 65 72 61 74 65 0a 20 20 20 20 75 6e 69 71 75 65 20 70 6f 72 74 73 20 66 6f 72 20 | o.generate.....unique.ports.for. |
| 0c40 | 79 6f 75 72 20 70 72 6f 78 79 20 6f 72 20 74 69 6e 79 20 73 65 72 76 65 72 2e 20 0a 0a 4d 61 6b | your.proxy.or.tiny.server....Mak |
| 0c60 | 65 66 69 6c 65 0a 20 20 20 20 54 68 69 73 20 69 73 20 74 68 65 20 6d 61 6b 65 66 69 6c 65 20 74 | efile.....This.is.the.makefile.t |
| 0c80 | 68 61 74 20 62 75 69 6c 64 73 20 74 68 65 20 70 72 6f 78 79 20 70 72 6f 67 72 61 6d 2e 20 20 54 | hat.builds.the.proxy.program...T |
| 0ca0 | 79 70 65 20 22 6d 61 6b 65 22 0a 20 20 20 20 74 6f 20 62 75 69 6c 64 20 79 6f 75 72 20 73 6f 6c | ype."make".....to.build.your.sol |
| 0cc0 | 75 74 69 6f 6e 2c 20 6f 72 20 22 6d 61 6b 65 20 63 6c 65 61 6e 22 20 66 6f 6c 6c 6f 77 65 64 20 | ution,.or."make.clean".followed. |
| 0ce0 | 62 79 20 22 6d 61 6b 65 22 20 66 6f 72 20 61 0a 20 20 20 20 66 72 65 73 68 20 62 75 69 6c 64 2e | by."make".for.a.....fresh.build. |
| 0d00 | 20 0a 0a 20 20 20 20 54 79 70 65 20 22 6d 61 6b 65 20 68 61 6e 64 69 6e 22 20 74 6f 20 63 72 65 | .......Type."make.handin".to.cre |
| 0d20 | 61 74 65 20 74 68 65 20 74 61 72 66 69 6c 65 20 74 68 61 74 20 79 6f 75 20 77 69 6c 6c 20 62 65 | ate.the.tarfile.that.you.will.be |
| 0d40 | 20 68 61 6e 64 69 6e 67 0a 20 20 20 20 69 6e 2e 20 59 6f 75 20 63 61 6e 20 6d 6f 64 69 66 79 20 | .handing.....in..You.can.modify. |
| 0d60 | 69 74 20 61 6e 79 20 77 61 79 20 79 6f 75 20 6c 69 6b 65 2e 20 59 6f 75 72 20 69 6e 73 74 72 75 | it.any.way.you.like..Your.instru |
| 0d80 | 63 74 6f 72 20 77 69 6c 6c 20 75 73 65 20 79 6f 75 72 0a 20 20 20 20 4d 61 6b 65 66 69 6c 65 20 | ctor.will.use.your.....Makefile. |
| 0da0 | 74 6f 20 62 75 69 6c 64 20 79 6f 75 72 20 70 72 6f 78 79 20 66 72 6f 6d 20 73 6f 75 72 63 65 2e | to.build.your.proxy.from.source. |
| 0dc0 | 0a 0a 70 6f 72 74 2d 66 6f 72 2d 75 73 65 72 2e 70 6c 0a 20 20 20 20 47 65 6e 65 72 61 74 65 73 | ..port-for-user.pl.....Generates |
| 0de0 | 20 61 20 72 61 6e 64 6f 6d 20 70 6f 72 74 20 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 | .a.random.port.for.a.particular. |
| 0e00 | 75 73 65 72 0a 20 20 20 20 75 73 61 67 65 3a 20 2e 2f 70 6f 72 74 2d 66 6f 72 2d 75 73 65 72 2e | user.....usage:../port-for-user. |
| 0e20 | 70 6c 20 3c 75 73 65 72 49 44 3e 0a 0a 66 72 65 65 2d 70 6f 72 74 2e 73 68 0a 20 20 20 20 48 61 | pl.<userID>..free-port.sh.....Ha |
| 0e40 | 6e 64 79 20 73 63 72 69 70 74 20 74 68 61 74 20 69 64 65 6e 74 69 66 69 65 73 20 61 6e 20 75 6e | ndy.script.that.identifies.an.un |
| 0e60 | 75 73 65 64 20 54 43 50 20 70 6f 72 74 20 74 68 61 74 20 79 6f 75 20 63 61 6e 20 75 73 65 0a 20 | used.TCP.port.that.you.can.use.. |
| 0e80 | 20 20 20 66 6f 72 20 79 6f 75 72 20 70 72 6f 78 79 20 6f 72 20 74 69 6e 79 2e 20 0a 20 20 20 20 | ...for.your.proxy.or.tiny....... |
| 0ea0 | 75 73 61 67 65 3a 20 2e 2f 66 72 65 65 2d 70 6f 72 74 2e 73 68 0a 0a 64 72 69 76 65 72 2e 73 68 | usage:../free-port.sh..driver.sh |
| 0ec0 | 0a 20 20 20 20 54 68 65 20 61 75 74 6f 67 72 61 64 65 72 20 66 6f 72 20 42 61 73 69 63 2c 20 43 | .....The.autograder.for.Basic,.C |
| 0ee0 | 6f 6e 63 75 72 72 65 6e 63 79 2c 20 61 6e 64 20 43 61 63 68 65 2e 20 20 20 20 20 20 20 20 0a 20 | oncurrency,.and.Cache........... |
| 0f00 | 20 20 20 75 73 61 67 65 3a 20 2e 2f 64 72 69 76 65 72 2e 73 68 0a 0a 6e 6f 70 2d 73 65 72 76 65 | ...usage:../driver.sh..nop-serve |
| 0f20 | 72 2e 70 79 0a 20 20 20 20 20 68 65 6c 70 65 72 20 66 6f 72 20 74 68 65 20 61 75 74 6f 67 72 61 | r.py......helper.for.the.autogra |
| 0f40 | 64 65 72 2e 20 20 20 20 20 20 20 20 20 0a 0a 74 69 6e 79 0a 20 20 20 20 54 69 6e 79 20 57 65 62 | der............tiny.....Tiny.Web |
| 0f60 | 20 73 65 72 76 65 72 20 66 72 6f 6d 20 74 68 65 20 43 53 3a 41 50 50 20 74 65 78 74 0a 0a 00 00 | .server.from.the.CS:APP.text.... |
| 0f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1000 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 63 73 61 70 70 2e 63 00 00 00 00 00 00 00 00 | proxylab-handout/csapp.c........ |
| 1020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1060 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 1080 | 30 30 35 36 37 34 33 00 31 33 35 36 33 33 30 37 37 36 32 00 30 31 33 36 37 30 00 20 30 00 00 00 | 0056743.13563307762.013670..0... |
| 10a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 10c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 10e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1100 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 1120 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 1140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1200 | 2f 2a 20 0a 20 2a 20 63 73 61 70 70 2e 63 20 2d 20 46 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 74 | /*...*.csapp.c.-.Functions.for.t |
| 1220 | 68 65 20 43 53 3a 41 50 50 33 65 20 62 6f 6f 6b 0a 20 2a 0a 20 2a 20 55 70 64 61 74 65 64 20 31 | he.CS:APP3e.book..*..*.Updated.1 |
| 1240 | 30 2f 32 30 31 36 20 72 65 62 3a 0a 20 2a 20 20 20 2d 20 46 69 78 65 64 20 62 75 67 20 69 6e 20 | 0/2016.reb:..*...-.Fixed.bug.in. |
| 1260 | 73 69 6f 5f 6c 74 6f 61 20 74 68 61 74 20 64 69 64 6e 27 74 20 63 6f 76 65 72 20 6e 65 67 61 74 | sio_ltoa.that.didn't.cover.negat |
| 1280 | 69 76 65 20 6e 75 6d 62 65 72 73 0a 20 2a 0a 20 2a 20 55 70 64 61 74 65 64 20 32 2f 32 30 31 36 | ive.numbers..*..*.Updated.2/2016 |
| 12a0 | 20 64 72 6f 68 3a 0a 20 2a 20 20 20 2d 20 55 70 64 61 74 65 64 20 6f 70 65 6e 5f 63 6c 69 65 6e | .droh:..*...-.Updated.open_clien |
| 12c0 | 74 66 64 20 61 6e 64 20 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 74 6f 20 66 61 69 6c 20 6d 6f | tfd.and.open_listenfd.to.fail.mo |
| 12e0 | 72 65 20 67 72 61 63 65 66 75 6c 6c 79 0a 20 2a 0a 20 2a 20 55 70 64 61 74 65 64 20 38 2f 32 30 | re.gracefully..*..*.Updated.8/20 |
| 1300 | 31 34 20 64 72 6f 68 3a 20 0a 20 2a 20 20 20 2d 20 4e 65 77 20 76 65 72 73 69 6f 6e 73 20 6f 66 | 14.droh:...*...-.New.versions.of |
| 1320 | 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 20 61 6e 64 20 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 | .open_clientfd.and.open_listenfd |
| 1340 | 20 61 72 65 20 72 65 65 6e 74 72 61 6e 74 20 61 6e 64 0a 20 2a 20 20 20 20 20 70 72 6f 74 6f 63 | .are.reentrant.and..*.....protoc |
| 1360 | 6f 6c 20 69 6e 64 65 70 65 6e 64 65 6e 74 2e 0a 20 2a 0a 20 2a 20 20 20 2d 20 41 64 64 65 64 20 | ol.independent...*..*...-.Added. |
| 1380 | 70 72 6f 74 6f 63 6f 6c 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 69 6e 65 74 5f 6e 74 6f 70 20 61 | protocol-independent.inet_ntop.a |
| 13a0 | 6e 64 20 69 6e 65 74 5f 70 74 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 2e 20 54 68 65 0a 20 2a 20 20 | nd.inet_pton.functions..The..*.. |
| 13c0 | 20 20 20 69 6e 65 74 5f 6e 74 6f 61 20 61 6e 64 20 69 6e 65 74 5f 61 74 6f 6e 20 66 75 6e 63 74 | ...inet_ntoa.and.inet_aton.funct |
| 13e0 | 69 6f 6e 73 20 61 72 65 20 6f 62 73 6f 6c 65 74 65 2e 0a 20 2a 0a 20 2a 20 55 70 64 61 74 65 64 | ions.are.obsolete...*..*.Updated |
| 1400 | 20 37 2f 32 30 31 34 20 64 72 6f 68 3a 0a 20 2a 20 20 20 2d 20 41 64 65 64 20 72 65 65 6e 74 72 | .7/2014.droh:..*...-.Aded.reentr |
| 1420 | 61 6e 74 20 73 69 6f 20 28 73 69 67 6e 61 6c 2d 73 61 66 65 20 49 2f 4f 29 20 72 6f 75 74 69 6e | ant.sio.(signal-safe.I/O).routin |
| 1440 | 65 73 0a 20 2a 20 0a 20 2a 20 55 70 64 61 74 65 64 20 34 2f 32 30 31 33 20 64 72 6f 68 3a 20 0a | es..*...*.Updated.4/2013.droh:.. |
| 1460 | 20 2a 20 20 20 2d 20 72 69 6f 5f 72 65 61 64 6c 69 6e 65 62 3a 20 66 69 78 65 64 20 65 64 67 65 | .*...-.rio_readlineb:.fixed.edge |
| 1480 | 20 63 61 73 65 20 62 75 67 0a 20 2a 20 20 20 2d 20 72 69 6f 5f 72 65 61 64 6e 62 3a 20 72 65 6d | .case.bug..*...-.rio_readnb:.rem |
| 14a0 | 6f 76 65 64 20 72 65 64 75 6e 64 61 6e 74 20 45 49 4e 54 52 20 63 68 65 63 6b 0a 20 2a 2f 0a 2f | oved.redundant.EINTR.check..*/./ |
| 14c0 | 2a 20 24 62 65 67 69 6e 20 63 73 61 70 70 2e 63 20 2a 2f 0a 23 69 6e 63 6c 75 64 65 20 22 63 73 | *.$begin.csapp.c.*/.#include."cs |
| 14e0 | 61 70 70 2e 68 22 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | app.h"../*********************** |
| 1500 | 2a 2a 2a 20 0a 20 2a 20 45 72 72 6f 72 2d 68 61 6e 64 6c 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 | ***...*.Error-handling.functions |
| 1520 | 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a | ..**************************/./* |
| 1540 | 20 24 62 65 67 69 6e 20 65 72 72 6f 72 66 75 6e 73 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 75 | .$begin.errorfuns.*/./*.$begin.u |
| 1560 | 6e 69 78 65 72 72 6f 72 20 2a 2f 0a 76 6f 69 64 20 75 6e 69 78 5f 65 72 72 6f 72 28 63 68 61 72 | nixerror.*/.void.unix_error(char |
| 1580 | 20 2a 6d 73 67 29 20 2f 2a 20 55 6e 69 78 2d 73 74 79 6c 65 20 65 72 72 6f 72 20 2a 2f 0a 7b 0a | .*msg)./*.Unix-style.error.*/.{. |
| 15a0 | 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 25 73 3a 20 25 73 5c 6e 22 2c 20 | ....fprintf(stderr,."%s:.%s\n",. |
| 15c0 | 6d 73 67 2c 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 0a 20 20 20 20 65 78 69 74 28 | msg,.strerror(errno));.....exit( |
| 15e0 | 30 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 75 6e 69 78 65 72 72 6f 72 20 2a 2f 0a 0a 76 6f 69 64 | 0);.}./*.$end.unixerror.*/..void |
| 1600 | 20 70 6f 73 69 78 5f 65 72 72 6f 72 28 69 6e 74 20 63 6f 64 65 2c 20 63 68 61 72 20 2a 6d 73 67 | .posix_error(int.code,.char.*msg |
| 1620 | 29 20 2f 2a 20 50 6f 73 69 78 2d 73 74 79 6c 65 20 65 72 72 6f 72 20 2a 2f 0a 7b 0a 20 20 20 20 | )./*.Posix-style.error.*/.{..... |
| 1640 | 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 25 73 3a 20 25 73 5c 6e 22 2c 20 6d 73 67 2c | fprintf(stderr,."%s:.%s\n",.msg, |
| 1660 | 20 73 74 72 65 72 72 6f 72 28 63 6f 64 65 29 29 3b 0a 20 20 20 20 65 78 69 74 28 30 29 3b 0a 7d | .strerror(code));.....exit(0);.} |
| 1680 | 0a 0a 76 6f 69 64 20 67 61 69 5f 65 72 72 6f 72 28 69 6e 74 20 63 6f 64 65 2c 20 63 68 61 72 20 | ..void.gai_error(int.code,.char. |
| 16a0 | 2a 6d 73 67 29 20 2f 2a 20 47 65 74 61 64 64 72 69 6e 66 6f 2d 73 74 79 6c 65 20 65 72 72 6f 72 | *msg)./*.Getaddrinfo-style.error |
| 16c0 | 20 2a 2f 0a 7b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 25 73 3a 20 25 | .*/.{.....fprintf(stderr,."%s:.% |
| 16e0 | 73 5c 6e 22 2c 20 6d 73 67 2c 20 67 61 69 5f 73 74 72 65 72 72 6f 72 28 63 6f 64 65 29 29 3b 0a | s\n",.msg,.gai_strerror(code));. |
| 1700 | 20 20 20 20 65 78 69 74 28 30 29 3b 0a 7d 0a 0a 76 6f 69 64 20 61 70 70 5f 65 72 72 6f 72 28 63 | ....exit(0);.}..void.app_error(c |
| 1720 | 68 61 72 20 2a 6d 73 67 29 20 2f 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 65 72 72 6f 72 20 2a | har.*msg)./*.Application.error.* |
| 1740 | 2f 0a 7b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 25 73 5c 6e 22 2c 20 | /.{.....fprintf(stderr,."%s\n",. |
| 1760 | 6d 73 67 29 3b 0a 20 20 20 20 65 78 69 74 28 30 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 65 72 72 | msg);.....exit(0);.}./*.$end.err |
| 1780 | 6f 72 66 75 6e 73 20 2a 2f 0a 0a 76 6f 69 64 20 64 6e 73 5f 65 72 72 6f 72 28 63 68 61 72 20 2a | orfuns.*/..void.dns_error(char.* |
| 17a0 | 6d 73 67 29 20 2f 2a 20 4f 62 73 6f 6c 65 74 65 20 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 20 65 | msg)./*.Obsolete.gethostbyname.e |
| 17c0 | 72 72 6f 72 20 2a 2f 0a 7b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 25 | rror.*/.{.....fprintf(stderr,."% |
| 17e0 | 73 5c 6e 22 2c 20 6d 73 67 29 3b 0a 20 20 20 20 65 78 69 74 28 30 29 3b 0a 7d 0a 0a 0a 2f 2a 2a | s\n",.msg);.....exit(0);.}.../** |
| 1800 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| 1820 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 55 6e 69 78 | ***********..*.Wrappers.for.Unix |
| 1840 | 20 70 72 6f 63 65 73 73 20 63 6f 6e 74 72 6f 6c 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 2a 2a 2a | .process.control.functions..**** |
| 1860 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| 1880 | 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 24 62 65 67 69 6e 20 66 6f 72 6b 77 72 61 70 70 65 72 | ********/../*.$begin.forkwrapper |
| 18a0 | 20 2a 2f 0a 70 69 64 5f 74 20 46 6f 72 6b 28 76 6f 69 64 29 20 0a 7b 0a 20 20 20 20 70 69 64 5f | .*/.pid_t.Fork(void)..{.....pid_ |
| 18c0 | 74 20 70 69 64 3b 0a 0a 20 20 20 20 69 66 20 28 28 70 69 64 20 3d 20 66 6f 72 6b 28 29 29 20 3c | t.pid;......if.((pid.=.fork()).< |
| 18e0 | 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 46 6f 72 6b 20 65 72 72 6f 72 22 29 3b 0a 20 | .0)..unix_error("Fork.error");.. |
| 1900 | 20 20 20 72 65 74 75 72 6e 20 70 69 64 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 66 6f 72 6b 77 72 61 | ...return.pid;.}./*.$end.forkwra |
| 1920 | 70 70 65 72 20 2a 2f 0a 0a 76 6f 69 64 20 45 78 65 63 76 65 28 63 6f 6e 73 74 20 63 68 61 72 20 | pper.*/..void.Execve(const.char. |
| 1940 | 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 68 61 72 20 2a 63 6f 6e 73 74 20 61 72 67 76 5b 5d 2c 20 63 | *filename,.char.*const.argv[],.c |
| 1960 | 68 61 72 20 2a 63 6f 6e 73 74 20 65 6e 76 70 5b 5d 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 65 78 | har.*const.envp[])..{.....if.(ex |
| 1980 | 65 63 76 65 28 66 69 6c 65 6e 61 6d 65 2c 20 61 72 67 76 2c 20 65 6e 76 70 29 20 3c 20 30 29 0a | ecve(filename,.argv,.envp).<.0). |
| 19a0 | 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 45 78 65 63 76 65 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a | .unix_error("Execve.error");.}.. |
| 19c0 | 2f 2a 20 24 62 65 67 69 6e 20 77 61 69 74 20 2a 2f 0a 70 69 64 5f 74 20 57 61 69 74 28 69 6e 74 | /*.$begin.wait.*/.pid_t.Wait(int |
| 19e0 | 20 2a 73 74 61 74 75 73 29 20 0a 7b 0a 20 20 20 20 70 69 64 5f 74 20 70 69 64 3b 0a 0a 20 20 20 | .*status)..{.....pid_t.pid;..... |
| 1a00 | 20 69 66 20 28 28 70 69 64 20 20 3d 20 77 61 69 74 28 73 74 61 74 75 73 29 29 20 3c 20 30 29 0a | .if.((pid..=.wait(status)).<.0). |
| 1a20 | 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 57 61 69 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 | .unix_error("Wait.error");.....r |
| 1a40 | 65 74 75 72 6e 20 70 69 64 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 77 61 69 74 20 2a 2f 0a 0a 70 69 | eturn.pid;.}./*.$end.wait.*/..pi |
| 1a60 | 64 5f 74 20 57 61 69 74 70 69 64 28 70 69 64 5f 74 20 70 69 64 2c 20 69 6e 74 20 2a 69 70 74 72 | d_t.Waitpid(pid_t.pid,.int.*iptr |
| 1a80 | 2c 20 69 6e 74 20 6f 70 74 69 6f 6e 73 29 20 0a 7b 0a 20 20 20 20 70 69 64 5f 74 20 72 65 74 70 | ,.int.options)..{.....pid_t.retp |
| 1aa0 | 69 64 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 65 74 70 69 64 20 20 3d 20 77 61 69 74 70 69 64 28 | id;......if.((retpid..=.waitpid( |
| 1ac0 | 70 69 64 2c 20 69 70 74 72 2c 20 6f 70 74 69 6f 6e 73 29 29 20 3c 20 30 29 20 0a 09 75 6e 69 78 | pid,.iptr,.options)).<.0)...unix |
| 1ae0 | 5f 65 72 72 6f 72 28 22 57 61 69 74 70 69 64 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 | _error("Waitpid.error");.....ret |
| 1b00 | 75 72 6e 28 72 65 74 70 69 64 29 3b 0a 7d 0a 0a 2f 2a 20 24 62 65 67 69 6e 20 6b 69 6c 6c 20 2a | urn(retpid);.}../*.$begin.kill.* |
| 1b20 | 2f 0a 76 6f 69 64 20 4b 69 6c 6c 28 70 69 64 5f 74 20 70 69 64 2c 20 69 6e 74 20 73 69 67 6e 75 | /.void.Kill(pid_t.pid,.int.signu |
| 1b40 | 6d 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d | m)..{.....int.rc;......if.((rc.= |
| 1b60 | 20 6b 69 6c 6c 28 70 69 64 2c 20 73 69 67 6e 75 6d 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 | .kill(pid,.signum)).<.0)..unix_e |
| 1b80 | 72 72 6f 72 28 22 4b 69 6c 6c 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 6b 69 | rror("Kill.error");.}./*.$end.ki |
| 1ba0 | 6c 6c 20 2a 2f 0a 0a 76 6f 69 64 20 50 61 75 73 65 28 29 20 0a 7b 0a 20 20 20 20 28 76 6f 69 64 | ll.*/..void.Pause()..{.....(void |
| 1bc0 | 29 70 61 75 73 65 28 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 75 6e 73 69 67 6e 65 | )pause();.....return;.}..unsigne |
| 1be0 | 64 20 69 6e 74 20 53 6c 65 65 70 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 73 65 63 73 29 20 0a | d.int.Sleep(unsigned.int.secs).. |
| 1c00 | 7b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 | {.....unsigned.int.rc;......if.( |
| 1c20 | 28 72 63 20 3d 20 73 6c 65 65 70 28 73 65 63 73 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 | (rc.=.sleep(secs)).<.0)..unix_er |
| 1c40 | 72 6f 72 28 22 53 6c 65 65 70 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 | ror("Sleep.error");.....return.r |
| 1c60 | 63 3b 0a 7d 0a 0a 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 41 6c 61 72 6d 28 75 6e 73 69 67 6e 65 | c;.}..unsigned.int.Alarm(unsigne |
| 1c80 | 64 20 69 6e 74 20 73 65 63 6f 6e 64 73 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 61 6c 61 72 | d.int.seconds).{.....return.alar |
| 1ca0 | 6d 28 73 65 63 6f 6e 64 73 29 3b 0a 7d 0a 20 0a 76 6f 69 64 20 53 65 74 70 67 69 64 28 70 69 64 | m(seconds);.}...void.Setpgid(pid |
| 1cc0 | 5f 74 20 70 69 64 2c 20 70 69 64 5f 74 20 70 67 69 64 29 20 7b 0a 20 20 20 20 69 6e 74 20 72 63 | _t.pid,.pid_t.pgid).{.....int.rc |
| 1ce0 | 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 73 65 74 70 67 69 64 28 70 69 64 2c 20 70 67 | ;......if.((rc.=.setpgid(pid,.pg |
| 1d00 | 69 64 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 65 74 70 67 69 64 20 65 | id)).<.0)..unix_error("Setpgid.e |
| 1d20 | 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 70 69 64 5f 74 20 47 65 74 | rror");.....return;.}..pid_t.Get |
| 1d40 | 70 67 72 70 28 76 6f 69 64 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 70 67 72 70 28 | pgrp(void).{.....return.getpgrp( |
| 1d60 | 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | );.}../************************* |
| 1d80 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 55 6e 69 78 | ***********..*.Wrappers.for.Unix |
| 1da0 | 20 73 69 67 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 73 20 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .signal.functions...************ |
| 1dc0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 24 62 65 | ***********************/../*.$be |
| 1de0 | 67 69 6e 20 73 69 67 61 63 74 69 6f 6e 20 2a 2f 0a 68 61 6e 64 6c 65 72 5f 74 20 2a 53 69 67 6e | gin.sigaction.*/.handler_t.*Sign |
| 1e00 | 61 6c 28 69 6e 74 20 73 69 67 6e 75 6d 2c 20 68 61 6e 64 6c 65 72 5f 74 20 2a 68 61 6e 64 6c 65 | al(int.signum,.handler_t.*handle |
| 1e20 | 72 29 20 0a 7b 0a 20 20 20 20 73 74 72 75 63 74 20 73 69 67 61 63 74 69 6f 6e 20 61 63 74 69 6f | r)..{.....struct.sigaction.actio |
| 1e40 | 6e 2c 20 6f 6c 64 5f 61 63 74 69 6f 6e 3b 0a 0a 20 20 20 20 61 63 74 69 6f 6e 2e 73 61 5f 68 61 | n,.old_action;......action.sa_ha |
| 1e60 | 6e 64 6c 65 72 20 3d 20 68 61 6e 64 6c 65 72 3b 20 20 0a 20 20 20 20 73 69 67 65 6d 70 74 79 73 | ndler.=.handler;.......sigemptys |
| 1e80 | 65 74 28 26 61 63 74 69 6f 6e 2e 73 61 5f 6d 61 73 6b 29 3b 20 2f 2a 20 42 6c 6f 63 6b 20 73 69 | et(&action.sa_mask);./*.Block.si |
| 1ea0 | 67 73 20 6f 66 20 74 79 70 65 20 62 65 69 6e 67 20 68 61 6e 64 6c 65 64 20 2a 2f 0a 20 20 20 20 | gs.of.type.being.handled.*/..... |
| 1ec0 | 61 63 74 69 6f 6e 2e 73 61 5f 66 6c 61 67 73 20 3d 20 53 41 5f 52 45 53 54 41 52 54 3b 20 2f 2a | action.sa_flags.=.SA_RESTART;./* |
| 1ee0 | 20 52 65 73 74 61 72 74 20 73 79 73 63 61 6c 6c 73 20 69 66 20 70 6f 73 73 69 62 6c 65 20 2a 2f | .Restart.syscalls.if.possible.*/ |
| 1f00 | 0a 0a 20 20 20 20 69 66 20 28 73 69 67 61 63 74 69 6f 6e 28 73 69 67 6e 75 6d 2c 20 26 61 63 74 | ......if.(sigaction(signum,.&act |
| 1f20 | 69 6f 6e 2c 20 26 6f 6c 64 5f 61 63 74 69 6f 6e 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 | ion,.&old_action).<.0)..unix_err |
| 1f40 | 6f 72 28 22 53 69 67 6e 61 6c 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 28 | or("Signal.error");.....return.( |
| 1f60 | 6f 6c 64 5f 61 63 74 69 6f 6e 2e 73 61 5f 68 61 6e 64 6c 65 72 29 3b 0a 7d 0a 2f 2a 20 24 65 6e | old_action.sa_handler);.}./*.$en |
| 1f80 | 64 20 73 69 67 61 63 74 69 6f 6e 20 2a 2f 0a 0a 76 6f 69 64 20 53 69 67 70 72 6f 63 6d 61 73 6b | d.sigaction.*/..void.Sigprocmask |
| 1fa0 | 28 69 6e 74 20 68 6f 77 2c 20 63 6f 6e 73 74 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 73 | (int.how,.const.sigset_t.*set,.s |
| 1fc0 | 69 67 73 65 74 5f 74 20 2a 6f 6c 64 73 65 74 29 0a 7b 0a 20 20 20 20 69 66 20 28 73 69 67 70 72 | igset_t.*oldset).{.....if.(sigpr |
| 1fe0 | 6f 63 6d 61 73 6b 28 68 6f 77 2c 20 73 65 74 2c 20 6f 6c 64 73 65 74 29 20 3c 20 30 29 0a 09 75 | ocmask(how,.set,.oldset).<.0)..u |
| 2000 | 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 70 72 6f 63 6d 61 73 6b 20 65 72 72 6f 72 22 29 3b 0a | nix_error("Sigprocmask.error");. |
| 2020 | 20 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 76 6f 69 64 20 53 69 67 65 6d 70 74 79 73 65 74 28 | ....return;.}..void.Sigemptyset( |
| 2040 | 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 0a 7b 0a 20 20 20 20 69 66 20 28 73 69 67 65 6d 70 74 | sigset_t.*set).{.....if.(sigempt |
| 2060 | 79 73 65 74 28 73 65 74 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 65 | yset(set).<.0)..unix_error("Sige |
| 2080 | 6d 70 74 79 73 65 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a | mptyset.error");.....return;.}.. |
| 20a0 | 76 6f 69 64 20 53 69 67 66 69 6c 6c 73 65 74 28 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 0a 7b | void.Sigfillset(sigset_t.*set).{ |
| 20c0 | 20 0a 20 20 20 20 69 66 20 28 73 69 67 66 69 6c 6c 73 65 74 28 73 65 74 29 20 3c 20 30 29 0a 09 | ......if.(sigfillset(set).<.0).. |
| 20e0 | 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 66 69 6c 6c 73 65 74 20 65 72 72 6f 72 22 29 3b 0a | unix_error("Sigfillset.error");. |
| 2100 | 20 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 76 6f 69 64 20 53 69 67 61 64 64 73 65 74 28 73 69 | ....return;.}..void.Sigaddset(si |
| 2120 | 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 0a 7b 0a 20 20 20 20 69 | gset_t.*set,.int.signum).{.....i |
| 2140 | 66 20 28 73 69 67 61 64 64 73 65 74 28 73 65 74 2c 20 73 69 67 6e 75 6d 29 20 3c 20 30 29 0a 09 | f.(sigaddset(set,.signum).<.0).. |
| 2160 | 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 61 64 64 73 65 74 20 65 72 72 6f 72 22 29 3b 0a 20 | unix_error("Sigaddset.error");.. |
| 2180 | 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 76 6f 69 64 20 53 69 67 64 65 6c 73 65 74 28 73 69 67 | ...return;.}..void.Sigdelset(sig |
| 21a0 | 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 0a 7b 0a 20 20 20 20 69 66 | set_t.*set,.int.signum).{.....if |
| 21c0 | 20 28 73 69 67 64 65 6c 73 65 74 28 73 65 74 2c 20 73 69 67 6e 75 6d 29 20 3c 20 30 29 0a 09 75 | .(sigdelset(set,.signum).<.0)..u |
| 21e0 | 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 64 65 6c 73 65 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 | nix_error("Sigdelset.error");... |
| 2200 | 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 69 6e 74 20 53 69 67 69 73 6d 65 6d 62 65 72 28 63 6f 6e | ..return;.}..int.Sigismember(con |
| 2220 | 73 74 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 0a 7b 0a | st.sigset_t.*set,.int.signum).{. |
| 2240 | 20 20 20 20 69 6e 74 20 72 63 3b 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 73 69 67 69 73 6d | ....int.rc;.....if.((rc.=.sigism |
| 2260 | 65 6d 62 65 72 28 73 65 74 2c 20 73 69 67 6e 75 6d 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 | ember(set,.signum)).<.0)..unix_e |
| 2280 | 72 72 6f 72 28 22 53 69 67 69 73 6d 65 6d 62 65 72 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 | rror("Sigismember.error");.....r |
| 22a0 | 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 69 6e 74 20 53 69 67 73 75 73 70 65 6e 64 28 63 6f 6e 73 | eturn.rc;.}..int.Sigsuspend(cons |
| 22c0 | 74 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 20 3d 20 | t.sigset_t.*set).{.....int.rc.=. |
| 22e0 | 73 69 67 73 75 73 70 65 6e 64 28 73 65 74 29 3b 20 2f 2a 20 61 6c 77 61 79 73 20 72 65 74 75 72 | sigsuspend(set);./*.always.retur |
| 2300 | 6e 73 20 2d 31 20 2a 2f 0a 20 20 20 20 69 66 20 28 65 72 72 6e 6f 20 21 3d 20 45 49 4e 54 52 29 | ns.-1.*/.....if.(errno.!=.EINTR) |
| 2320 | 0a 20 20 20 20 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 73 75 73 70 65 6e 64 20 | .........unix_error("Sigsuspend. |
| 2340 | 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a | error");.....return.rc;.}../**** |
| 2360 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| 2380 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 54 68 65 | *************************..*.The |
| 23a0 | 20 53 69 6f 20 28 53 69 67 6e 61 6c 2d 73 61 66 65 20 49 2f 4f 29 20 70 61 63 6b 61 67 65 20 2d | .Sio.(Signal-safe.I/O).package.- |
| 23c0 | 20 73 69 6d 70 6c 65 20 72 65 65 6e 74 72 61 6e 74 20 6f 75 74 70 75 74 0a 20 2a 20 66 75 6e 63 | .simple.reentrant.output..*.func |
| 23e0 | 74 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 73 61 66 65 20 66 6f 72 20 73 69 67 6e 61 6c 20 68 | tions.that.are.safe.for.signal.h |
| 2400 | 61 6e 64 6c 65 72 73 2e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | andlers...********************** |
| 2420 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| 2440 | 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 50 72 69 76 61 74 65 20 73 69 6f 20 66 75 6e 63 74 69 6f | *******/../*.Private.sio.functio |
| 2460 | 6e 73 20 2a 2f 0a 0a 2f 2a 20 24 62 65 67 69 6e 20 73 69 6f 70 72 69 76 61 74 65 20 2a 2f 0a 2f | ns.*/../*.$begin.sioprivate.*/./ |
| 2480 | 2a 20 73 69 6f 5f 72 65 76 65 72 73 65 20 2d 20 52 65 76 65 72 73 65 20 61 20 73 74 72 69 6e 67 | *.sio_reverse.-.Reverse.a.string |
| 24a0 | 20 28 66 72 6f 6d 20 4b 26 52 29 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 20 73 69 6f 5f 72 | .(from.K&R).*/.static.void.sio_r |
| 24c0 | 65 76 65 72 73 65 28 63 68 61 72 20 73 5b 5d 29 0a 7b 0a 20 20 20 20 69 6e 74 20 63 2c 20 69 2c | everse(char.s[]).{.....int.c,.i, |
| 24e0 | 20 6a 3b 0a 0a 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 2c 20 6a 20 3d 20 73 74 72 6c 65 6e 28 | .j;......for.(i.=.0,.j.=.strlen( |
| 2500 | 73 29 2d 31 3b 20 69 20 3c 20 6a 3b 20 69 2b 2b 2c 20 6a 2d 2d 29 20 7b 0a 20 20 20 20 20 20 20 | s)-1;.i.<.j;.i++,.j--).{........ |
| 2520 | 20 63 20 3d 20 73 5b 69 5d 3b 0a 20 20 20 20 20 20 20 20 73 5b 69 5d 20 3d 20 73 5b 6a 5d 3b 0a | .c.=.s[i];.........s[i].=.s[j];. |
| 2540 | 20 20 20 20 20 20 20 20 73 5b 6a 5d 20 3d 20 63 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 2f 2a 20 73 69 | ........s[j].=.c;.....}.}../*.si |
| 2560 | 6f 5f 6c 74 6f 61 20 2d 20 43 6f 6e 76 65 72 74 20 6c 6f 6e 67 20 74 6f 20 62 61 73 65 20 62 20 | o_ltoa.-.Convert.long.to.base.b. |
| 2580 | 73 74 72 69 6e 67 20 28 66 72 6f 6d 20 4b 26 52 29 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 | string.(from.K&R).*/.static.void |
| 25a0 | 20 73 69 6f 5f 6c 74 6f 61 28 6c 6f 6e 67 20 76 2c 20 63 68 61 72 20 73 5b 5d 2c 20 69 6e 74 20 | .sio_ltoa(long.v,.char.s[],.int. |
| 25c0 | 62 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 63 2c 20 69 20 3d 20 30 3b 0a 20 20 20 20 69 6e 74 20 | b)..{.....int.c,.i.=.0;.....int. |
| 25e0 | 6e 65 67 20 3d 20 76 20 3c 20 30 3b 0a 0a 20 20 20 20 69 66 20 28 6e 65 67 29 0a 09 76 20 3d 20 | neg.=.v.<.0;......if.(neg)..v.=. |
| 2600 | 2d 76 3b 0a 0a 20 20 20 20 64 6f 20 7b 20 20 0a 20 20 20 20 20 20 20 20 73 5b 69 2b 2b 5d 20 3d | -v;......do.{...........s[i++].= |
| 2620 | 20 28 28 63 20 3d 20 28 76 20 25 20 62 29 29 20 3c 20 31 30 29 20 20 3f 20 20 63 20 2b 20 27 30 | .((c.=.(v.%.b)).<.10)..?..c.+.'0 |
| 2640 | 27 20 3a 20 63 20 2d 20 31 30 20 2b 20 27 61 27 3b 0a 20 20 20 20 7d 20 77 68 69 6c 65 20 28 28 | '.:.c.-.10.+.'a';.....}.while.(( |
| 2660 | 76 20 2f 3d 20 62 29 20 3e 20 30 29 3b 0a 0a 20 20 20 20 69 66 20 28 6e 65 67 29 0a 09 73 5b 69 | v./=.b).>.0);......if.(neg)..s[i |
| 2680 | 2b 2b 5d 20 3d 20 27 2d 27 3b 0a 0a 20 20 20 20 73 5b 69 5d 20 3d 20 27 5c 30 27 3b 0a 20 20 20 | ++].=.'-';......s[i].=.'\0';.... |
| 26a0 | 20 73 69 6f 5f 72 65 76 65 72 73 65 28 73 29 3b 0a 7d 0a 0a 2f 2a 20 73 69 6f 5f 73 74 72 6c 65 | .sio_reverse(s);.}../*.sio_strle |
| 26c0 | 6e 20 2d 20 52 65 74 75 72 6e 20 6c 65 6e 67 74 68 20 6f 66 20 73 74 72 69 6e 67 20 28 66 72 6f | n.-.Return.length.of.string.(fro |
| 26e0 | 6d 20 4b 26 52 29 20 2a 2f 0a 73 74 61 74 69 63 20 73 69 7a 65 5f 74 20 73 69 6f 5f 73 74 72 6c | m.K&R).*/.static.size_t.sio_strl |
| 2700 | 65 6e 28 63 68 61 72 20 73 5b 5d 29 0a 7b 0a 20 20 20 20 69 6e 74 20 69 20 3d 20 30 3b 0a 0a 20 | en(char.s[]).{.....int.i.=.0;... |
| 2720 | 20 20 20 77 68 69 6c 65 20 28 73 5b 69 5d 20 21 3d 20 27 5c 30 27 29 0a 20 20 20 20 20 20 20 20 | ...while.(s[i].!=.'\0')......... |
| 2740 | 2b 2b 69 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 69 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 73 69 6f | ++i;.....return.i;.}./*.$end.sio |
| 2760 | 70 72 69 76 61 74 65 20 2a 2f 0a 0a 2f 2a 20 50 75 62 6c 69 63 20 53 69 6f 20 66 75 6e 63 74 69 | private.*/../*.Public.Sio.functi |
| 2780 | 6f 6e 73 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 73 69 6f 70 75 62 6c 69 63 20 2a 2f 0a 0a 73 | ons.*/./*.$begin.siopublic.*/..s |
| 27a0 | 73 69 7a 65 5f 74 20 73 69 6f 5f 70 75 74 73 28 63 68 61 72 20 73 5b 5d 29 20 2f 2a 20 50 75 74 | size_t.sio_puts(char.s[])./*.Put |
| 27c0 | 20 73 74 72 69 6e 67 20 2a 2f 0a 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 77 72 69 74 65 28 53 54 | .string.*/.{.....return.write(ST |
| 27e0 | 44 4f 55 54 5f 46 49 4c 45 4e 4f 2c 20 73 2c 20 73 69 6f 5f 73 74 72 6c 65 6e 28 73 29 29 3b 20 | DOUT_FILENO,.s,.sio_strlen(s));. |
| 2800 | 2f 2f 6c 69 6e 65 3a 63 73 61 70 70 3a 73 69 6f 73 74 72 6c 65 6e 0a 7d 0a 0a 73 73 69 7a 65 5f | //line:csapp:siostrlen.}..ssize_ |
| 2820 | 74 20 73 69 6f 5f 70 75 74 6c 28 6c 6f 6e 67 20 76 29 20 2f 2a 20 50 75 74 20 6c 6f 6e 67 20 2a | t.sio_putl(long.v)./*.Put.long.* |
| 2840 | 2f 0a 7b 0a 20 20 20 20 63 68 61 72 20 73 5b 31 32 38 5d 3b 0a 20 20 20 20 0a 20 20 20 20 73 69 | /.{.....char.s[128];..........si |
| 2860 | 6f 5f 6c 74 6f 61 28 76 2c 20 73 2c 20 31 30 29 3b 20 2f 2a 20 42 61 73 65 64 20 6f 6e 20 4b 26 | o_ltoa(v,.s,.10);./*.Based.on.K& |
| 2880 | 52 20 69 74 6f 61 28 29 20 2a 2f 20 20 2f 2f 6c 69 6e 65 3a 63 73 61 70 70 3a 73 69 6f 6c 74 6f | R.itoa().*/..//line:csapp:siolto |
| 28a0 | 61 0a 20 20 20 20 72 65 74 75 72 6e 20 73 69 6f 5f 70 75 74 73 28 73 29 3b 0a 7d 0a 0a 76 6f 69 | a.....return.sio_puts(s);.}..voi |
| 28c0 | 64 20 73 69 6f 5f 65 72 72 6f 72 28 63 68 61 72 20 73 5b 5d 29 20 2f 2a 20 50 75 74 20 65 72 72 | d.sio_error(char.s[])./*.Put.err |
| 28e0 | 6f 72 20 6d 65 73 73 61 67 65 20 61 6e 64 20 65 78 69 74 20 2a 2f 0a 7b 0a 20 20 20 20 73 69 6f | or.message.and.exit.*/.{.....sio |
| 2900 | 5f 70 75 74 73 28 73 29 3b 0a 20 20 20 20 5f 65 78 69 74 28 31 29 3b 20 20 20 20 20 20 20 20 20 | _puts(s);....._exit(1);......... |
| 2920 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c | .............................//l |
| 2940 | 69 6e 65 3a 63 73 61 70 70 3a 73 69 6f 65 78 69 74 0a 7d 0a 2f 2a 20 24 65 6e 64 20 73 69 6f 70 | ine:csapp:sioexit.}./*.$end.siop |
| 2960 | 75 62 6c 69 63 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ublic.*/../********************* |
| 2980 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 74 68 65 20 53 | **********..*.Wrappers.for.the.S |
| 29a0 | 49 4f 20 72 6f 75 74 69 6e 65 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | IO.routines..******************* |
| 29c0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 73 73 69 7a 65 5f 74 20 53 69 6f 5f 70 75 74 6c 28 6c 6f | ***********/.ssize_t.Sio_putl(lo |
| 29e0 | 6e 67 20 76 29 0a 7b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 6e 3b 0a 20 20 0a 20 20 20 20 69 66 | ng.v).{.....ssize_t.n;........if |
| 2a00 | 20 28 28 6e 20 3d 20 73 69 6f 5f 70 75 74 6c 28 76 29 29 20 3c 20 30 29 0a 09 73 69 6f 5f 65 72 | .((n.=.sio_putl(v)).<.0)..sio_er |
| 2a20 | 72 6f 72 28 22 53 69 6f 5f 70 75 74 6c 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 | ror("Sio_putl.error");.....retur |
| 2a40 | 6e 20 6e 3b 0a 7d 0a 0a 73 73 69 7a 65 5f 74 20 53 69 6f 5f 70 75 74 73 28 63 68 61 72 20 73 5b | n.n;.}..ssize_t.Sio_puts(char.s[ |
| 2a60 | 5d 29 0a 7b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 6e 3b 0a 20 20 0a 20 20 20 20 69 66 20 28 28 | ]).{.....ssize_t.n;........if.(( |
| 2a80 | 6e 20 3d 20 73 69 6f 5f 70 75 74 73 28 73 29 29 20 3c 20 30 29 0a 09 73 69 6f 5f 65 72 72 6f 72 | n.=.sio_puts(s)).<.0)..sio_error |
| 2aa0 | 28 22 53 69 6f 5f 70 75 74 73 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 6e | ("Sio_puts.error");.....return.n |
| 2ac0 | 3b 0a 7d 0a 0a 76 6f 69 64 20 53 69 6f 5f 65 72 72 6f 72 28 63 68 61 72 20 73 5b 5d 29 0a 7b 0a | ;.}..void.Sio_error(char.s[]).{. |
| 2ae0 | 20 20 20 20 73 69 6f 5f 65 72 72 6f 72 28 73 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ....sio_error(s);.}../********** |
| 2b00 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 | **********************..*.Wrappe |
| 2b20 | 72 73 20 66 6f 72 20 55 6e 69 78 20 49 2f 4f 20 72 6f 75 74 69 6e 65 73 0a 20 2a 2a 2a 2a 2a 2a | rs.for.Unix.I/O.routines..****** |
| 2b40 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 69 6e 74 | **************************/..int |
| 2b60 | 20 4f 70 65 6e 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 74 68 6e 61 6d 65 2c 20 69 6e 74 20 | .Open(const.char.*pathname,.int. |
| 2b80 | 66 6c 61 67 73 2c 20 6d 6f 64 65 5f 74 20 6d 6f 64 65 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 | flags,.mode_t.mode)..{.....int.r |
| 2ba0 | 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 6f 70 65 6e 28 70 61 74 68 6e 61 6d 65 2c | c;......if.((rc.=.open(pathname, |
| 2bc0 | 20 66 6c 61 67 73 2c 20 6d 6f 64 65 29 29 20 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 | .flags,.mode))..<.0)..unix_error |
| 2be0 | 28 22 4f 70 65 6e 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d | ("Open.error");.....return.rc;.} |
| 2c00 | 0a 0a 73 73 69 7a 65 5f 74 20 52 65 61 64 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a 62 75 66 | ..ssize_t.Read(int.fd,.void.*buf |
| 2c20 | 2c 20 73 69 7a 65 5f 74 20 63 6f 75 6e 74 29 20 0a 7b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 72 | ,.size_t.count)..{.....ssize_t.r |
| 2c40 | 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 72 65 61 64 28 66 64 2c 20 62 75 66 2c 20 | c;......if.((rc.=.read(fd,.buf,. |
| 2c60 | 63 6f 75 6e 74 29 29 20 3c 20 30 29 20 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 52 65 61 64 20 | count)).<.0)...unix_error("Read. |
| 2c80 | 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 73 73 69 7a 65 | error");.....return.rc;.}..ssize |
| 2ca0 | 5f 74 20 57 72 69 74 65 28 69 6e 74 20 66 64 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 62 75 66 | _t.Write(int.fd,.const.void.*buf |
| 2cc0 | 2c 20 73 69 7a 65 5f 74 20 63 6f 75 6e 74 29 20 0a 7b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 72 | ,.size_t.count)..{.....ssize_t.r |
| 2ce0 | 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 77 72 69 74 65 28 66 64 2c 20 62 75 66 2c | c;......if.((rc.=.write(fd,.buf, |
| 2d00 | 20 63 6f 75 6e 74 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 57 72 69 74 65 | .count)).<.0)..unix_error("Write |
| 2d20 | 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 6f 66 66 5f | .error");.....return.rc;.}..off_ |
| 2d40 | 74 20 4c 73 65 65 6b 28 69 6e 74 20 66 69 6c 64 65 73 2c 20 6f 66 66 5f 74 20 6f 66 66 73 65 74 | t.Lseek(int.fildes,.off_t.offset |
| 2d60 | 2c 20 69 6e 74 20 77 68 65 6e 63 65 29 20 0a 7b 0a 20 20 20 20 6f 66 66 5f 74 20 72 63 3b 0a 0a | ,.int.whence)..{.....off_t.rc;.. |
| 2d80 | 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 6c 73 65 65 6b 28 66 69 6c 64 65 73 2c 20 6f 66 66 73 | ....if.((rc.=.lseek(fildes,.offs |
| 2da0 | 65 74 2c 20 77 68 65 6e 63 65 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 4c | et,.whence)).<.0)..unix_error("L |
| 2dc0 | 73 65 65 6b 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a | seek.error");.....return.rc;.}.. |
| 2de0 | 76 6f 69 64 20 43 6c 6f 73 65 28 69 6e 74 20 66 64 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 | void.Close(int.fd)..{.....int.rc |
| 2e00 | 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 63 6c 6f 73 65 28 66 64 29 29 20 3c 20 30 29 | ;......if.((rc.=.close(fd)).<.0) |
| 2e20 | 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 43 6c 6f 73 65 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a | ..unix_error("Close.error");.}.. |
| 2e40 | 69 6e 74 20 53 65 6c 65 63 74 28 69 6e 74 20 20 6e 2c 20 66 64 5f 73 65 74 20 2a 72 65 61 64 66 | int.Select(int..n,.fd_set.*readf |
| 2e60 | 64 73 2c 20 66 64 5f 73 65 74 20 2a 77 72 69 74 65 66 64 73 2c 0a 09 20 20 20 66 64 5f 73 65 74 | ds,.fd_set.*writefds,.....fd_set |
| 2e80 | 20 2a 65 78 63 65 70 74 66 64 73 2c 20 73 74 72 75 63 74 20 74 69 6d 65 76 61 6c 20 2a 74 69 6d | .*exceptfds,.struct.timeval.*tim |
| 2ea0 | 65 6f 75 74 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 | eout)..{.....int.rc;......if.((r |
| 2ec0 | 63 20 3d 20 73 65 6c 65 63 74 28 6e 2c 20 72 65 61 64 66 64 73 2c 20 77 72 69 74 65 66 64 73 2c | c.=.select(n,.readfds,.writefds, |
| 2ee0 | 20 65 78 63 65 70 74 66 64 73 2c 20 74 69 6d 65 6f 75 74 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 | .exceptfds,.timeout)).<.0)..unix |
| 2f00 | 5f 65 72 72 6f 72 28 22 53 65 6c 65 63 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 | _error("Select.error");.....retu |
| 2f20 | 72 6e 20 72 63 3b 0a 7d 0a 0a 69 6e 74 20 44 75 70 32 28 69 6e 74 20 66 64 31 2c 20 69 6e 74 20 | rn.rc;.}..int.Dup2(int.fd1,.int. |
| 2f40 | 66 64 32 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 | fd2)..{.....int.rc;......if.((rc |
| 2f60 | 20 3d 20 64 75 70 32 28 66 64 31 2c 20 66 64 32 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 | .=.dup2(fd1,.fd2)).<.0)..unix_er |
| 2f80 | 72 6f 72 28 22 44 75 70 32 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 | ror("Dup2.error");.....return.rc |
| 2fa0 | 3b 0a 7d 0a 0a 76 6f 69 64 20 53 74 61 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e | ;.}..void.Stat(const.char.*filen |
| 2fc0 | 61 6d 65 2c 20 73 74 72 75 63 74 20 73 74 61 74 20 2a 62 75 66 29 20 0a 7b 0a 20 20 20 20 69 66 | ame,.struct.stat.*buf)..{.....if |
| 2fe0 | 20 28 73 74 61 74 28 66 69 6c 65 6e 61 6d 65 2c 20 62 75 66 29 20 3c 20 30 29 0a 09 75 6e 69 78 | .(stat(filename,.buf).<.0)..unix |
| 3000 | 5f 65 72 72 6f 72 28 22 53 74 61 74 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 46 73 | _error("Stat.error");.}..void.Fs |
| 3020 | 74 61 74 28 69 6e 74 20 66 64 2c 20 73 74 72 75 63 74 20 73 74 61 74 20 2a 62 75 66 29 20 0a 7b | tat(int.fd,.struct.stat.*buf)..{ |
| 3040 | 0a 20 20 20 20 69 66 20 28 66 73 74 61 74 28 66 64 2c 20 62 75 66 29 20 3c 20 30 29 0a 09 75 6e | .....if.(fstat(fd,.buf).<.0)..un |
| 3060 | 69 78 5f 65 72 72 6f 72 28 22 46 73 74 61 74 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 2f 2a 2a 2a | ix_error("Fstat.error");.}../*** |
| 3080 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 | ******************************.. |
| 30a0 | 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 64 69 72 65 63 74 6f 72 79 20 66 75 6e 63 74 69 6f | *.Wrappers.for.directory.functio |
| 30c0 | 6e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | n..***************************** |
| 30e0 | 2a 2a 2a 2a 2f 0a 0a 44 49 52 20 2a 4f 70 65 6e 64 69 72 28 63 6f 6e 73 74 20 63 68 61 72 20 2a | ****/..DIR.*Opendir(const.char.* |
| 3100 | 6e 61 6d 65 29 20 0a 7b 0a 20 20 20 20 44 49 52 20 2a 64 69 72 70 20 3d 20 6f 70 65 6e 64 69 72 | name)..{.....DIR.*dirp.=.opendir |
| 3120 | 28 6e 61 6d 65 29 3b 20 0a 0a 20 20 20 20 69 66 20 28 21 64 69 72 70 29 0a 20 20 20 20 20 20 20 | (name);.......if.(!dirp)........ |
| 3140 | 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 6f 70 65 6e 64 69 72 20 65 72 72 6f 72 22 29 3b 0a 20 20 | .unix_error("opendir.error");... |
| 3160 | 20 20 72 65 74 75 72 6e 20 64 69 72 70 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 64 69 72 65 6e 74 20 | ..return.dirp;.}..struct.dirent. |
| 3180 | 2a 52 65 61 64 64 69 72 28 44 49 52 20 2a 64 69 72 70 29 0a 7b 0a 20 20 20 20 73 74 72 75 63 74 | *Readdir(DIR.*dirp).{.....struct |
| 31a0 | 20 64 69 72 65 6e 74 20 2a 64 65 70 3b 0a 20 20 20 20 0a 20 20 20 20 65 72 72 6e 6f 20 3d 20 30 | .dirent.*dep;..........errno.=.0 |
| 31c0 | 3b 0a 20 20 20 20 64 65 70 20 3d 20 72 65 61 64 64 69 72 28 64 69 72 70 29 3b 0a 20 20 20 20 69 | ;.....dep.=.readdir(dirp);.....i |
| 31e0 | 66 20 28 28 64 65 70 20 3d 3d 20 4e 55 4c 4c 29 20 26 26 20 28 65 72 72 6e 6f 20 21 3d 20 30 29 | f.((dep.==.NULL).&&.(errno.!=.0) |
| 3200 | 29 0a 20 20 20 20 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 72 65 61 64 64 69 72 20 65 72 | ).........unix_error("readdir.er |
| 3220 | 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 64 65 70 3b 0a 7d 0a 0a 69 6e 74 20 43 6c | ror");.....return.dep;.}..int.Cl |
| 3240 | 6f 73 65 64 69 72 28 44 49 52 20 2a 64 69 72 70 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b | osedir(DIR.*dirp)..{.....int.rc; |
| 3260 | 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 63 6c 6f 73 65 64 69 72 28 64 69 72 70 29 29 20 | ......if.((rc.=.closedir(dirp)). |
| 3280 | 3c 20 30 29 0a 20 20 20 20 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 63 6c 6f 73 65 64 69 | <.0).........unix_error("closedi |
| 32a0 | 72 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 2f 2a 2a | r.error");.....return.rc;.}../** |
| 32c0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| 32e0 | 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 6d 65 6d 6f 72 79 20 6d 61 70 | *****..*.Wrappers.for.memory.map |
| 3300 | 70 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ping.functions..**************** |
| 3320 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 76 6f 69 64 20 2a 4d | ***********************/.void.*M |
| 3340 | 6d 61 70 28 76 6f 69 64 20 2a 61 64 64 72 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 2c 20 69 6e 74 20 | map(void.*addr,.size_t.len,.int. |
| 3360 | 70 72 6f 74 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 69 6e 74 20 66 64 2c 20 6f 66 66 5f 74 20 6f | prot,.int.flags,.int.fd,.off_t.o |
| 3380 | 66 66 73 65 74 29 20 0a 7b 0a 20 20 20 20 76 6f 69 64 20 2a 70 74 72 3b 0a 0a 20 20 20 20 69 66 | ffset)..{.....void.*ptr;......if |
| 33a0 | 20 28 28 70 74 72 20 3d 20 6d 6d 61 70 28 61 64 64 72 2c 20 6c 65 6e 2c 20 70 72 6f 74 2c 20 66 | .((ptr.=.mmap(addr,.len,.prot,.f |
| 33c0 | 6c 61 67 73 2c 20 66 64 2c 20 6f 66 66 73 65 74 29 29 20 3d 3d 20 28 28 76 6f 69 64 20 2a 29 20 | lags,.fd,.offset)).==.((void.*). |
| 33e0 | 2d 31 29 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 6d 6d 61 70 20 65 72 72 6f 72 22 29 3b 0a | -1))..unix_error("mmap.error");. |
| 3400 | 20 20 20 20 72 65 74 75 72 6e 28 70 74 72 29 3b 0a 7d 0a 0a 76 6f 69 64 20 4d 75 6e 6d 61 70 28 | ....return(ptr);.}..void.Munmap( |
| 3420 | 76 6f 69 64 20 2a 73 74 61 72 74 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 67 74 68 29 20 0a 7b 0a 20 | void.*start,.size_t.length)..{.. |
| 3440 | 20 20 20 69 66 20 28 6d 75 6e 6d 61 70 28 73 74 61 72 74 2c 20 6c 65 6e 67 74 68 29 20 3c 20 30 | ...if.(munmap(start,.length).<.0 |
| 3460 | 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 6d 75 6e 6d 61 70 20 65 72 72 6f 72 22 29 3b 0a 7d | )..unix_error("munmap.error");.} |
| 3480 | 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ../***************************** |
| 34a0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 | **********************..*.Wrappe |
| 34c0 | 72 73 20 66 6f 72 20 64 79 6e 61 6d 69 63 20 73 74 6f 72 61 67 65 20 61 6c 6c 6f 63 61 74 69 6f | rs.for.dynamic.storage.allocatio |
| 34e0 | 6e 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | n.functions..******************* |
| 3500 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| 3520 | 2f 0a 0a 76 6f 69 64 20 2a 4d 61 6c 6c 6f 63 28 73 69 7a 65 5f 74 20 73 69 7a 65 29 20 0a 7b 0a | /..void.*Malloc(size_t.size)..{. |
| 3540 | 20 20 20 20 76 6f 69 64 20 2a 70 3b 0a 0a 20 20 20 20 69 66 20 28 28 70 20 20 3d 20 6d 61 6c 6c | ....void.*p;......if.((p..=.mall |
| 3560 | 6f 63 28 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 | oc(size)).==.NULL)..unix_error(" |
| 3580 | 4d 61 6c 6c 6f 63 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 70 3b 0a 7d 0a | Malloc.error");.....return.p;.}. |
| 35a0 | 0a 76 6f 69 64 20 2a 52 65 61 6c 6c 6f 63 28 76 6f 69 64 20 2a 70 74 72 2c 20 73 69 7a 65 5f 74 | .void.*Realloc(void.*ptr,.size_t |
| 35c0 | 20 73 69 7a 65 29 20 0a 7b 0a 20 20 20 20 76 6f 69 64 20 2a 70 3b 0a 0a 20 20 20 20 69 66 20 28 | .size)..{.....void.*p;......if.( |
| 35e0 | 28 70 20 20 3d 20 72 65 61 6c 6c 6f 63 28 70 74 72 2c 20 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c | (p..=.realloc(ptr,.size)).==.NUL |
| 3600 | 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 52 65 61 6c 6c 6f 63 20 65 72 72 6f 72 22 29 3b | L)..unix_error("Realloc.error"); |
| 3620 | 0a 20 20 20 20 72 65 74 75 72 6e 20 70 3b 0a 7d 0a 0a 76 6f 69 64 20 2a 43 61 6c 6c 6f 63 28 73 | .....return.p;.}..void.*Calloc(s |
| 3640 | 69 7a 65 5f 74 20 6e 6d 65 6d 62 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 29 20 0a 7b 0a 20 20 20 | ize_t.nmemb,.size_t.size)..{.... |
| 3660 | 20 76 6f 69 64 20 2a 70 3b 0a 0a 20 20 20 20 69 66 20 28 28 70 20 3d 20 63 61 6c 6c 6f 63 28 6e | .void.*p;......if.((p.=.calloc(n |
| 3680 | 6d 65 6d 62 2c 20 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f | memb,.size)).==.NULL)..unix_erro |
| 36a0 | 72 28 22 43 61 6c 6c 6f 63 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 70 3b | r("Calloc.error");.....return.p; |
| 36c0 | 0a 7d 0a 0a 76 6f 69 64 20 46 72 65 65 28 76 6f 69 64 20 2a 70 74 72 29 20 0a 7b 0a 20 20 20 20 | .}..void.Free(void.*ptr)..{..... |
| 36e0 | 66 72 65 65 28 70 74 72 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | free(ptr);.}../***************** |
| 3700 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 | *************************..*.Wra |
| 3720 | 70 70 65 72 73 20 66 6f 72 20 74 68 65 20 53 74 61 6e 64 61 72 64 20 49 2f 4f 20 66 75 6e 63 74 | ppers.for.the.Standard.I/O.funct |
| 3740 | 69 6f 6e 73 2e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ions...************************* |
| 3760 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 76 6f 69 64 20 46 63 6c 6f 73 65 28 46 | *****************/.void.Fclose(F |
| 3780 | 49 4c 45 20 2a 66 70 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 66 63 6c 6f 73 65 28 66 70 29 20 21 | ILE.*fp)..{.....if.(fclose(fp).! |
| 37a0 | 3d 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 46 63 6c 6f 73 65 20 65 72 72 6f 72 22 29 | =.0)..unix_error("Fclose.error") |
| 37c0 | 3b 0a 7d 0a 0a 46 49 4c 45 20 2a 46 64 6f 70 65 6e 28 69 6e 74 20 66 64 2c 20 63 6f 6e 73 74 20 | ;.}..FILE.*Fdopen(int.fd,.const. |
| 37e0 | 63 68 61 72 20 2a 74 79 70 65 29 20 0a 7b 0a 20 20 20 20 46 49 4c 45 20 2a 66 70 3b 0a 0a 20 20 | char.*type)..{.....FILE.*fp;.... |
| 3800 | 20 20 69 66 20 28 28 66 70 20 3d 20 66 64 6f 70 65 6e 28 66 64 2c 20 74 79 70 65 29 29 20 3d 3d | ..if.((fp.=.fdopen(fd,.type)).== |
| 3820 | 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 46 64 6f 70 65 6e 20 65 72 72 6f 72 | .NULL)..unix_error("Fdopen.error |
| 3840 | 22 29 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 66 70 3b 0a 7d 0a 0a 63 68 61 72 20 2a 46 67 65 | ");......return.fp;.}..char.*Fge |
| 3860 | 74 73 28 63 68 61 72 20 2a 70 74 72 2c 20 69 6e 74 20 6e 2c 20 46 49 4c 45 20 2a 73 74 72 65 61 | ts(char.*ptr,.int.n,.FILE.*strea |
| 3880 | 6d 29 20 0a 7b 0a 20 20 20 20 63 68 61 72 20 2a 72 70 74 72 3b 0a 0a 20 20 20 20 69 66 20 28 28 | m)..{.....char.*rptr;......if.(( |
| 38a0 | 28 72 70 74 72 20 3d 20 66 67 65 74 73 28 70 74 72 2c 20 6e 2c 20 73 74 72 65 61 6d 29 29 20 3d | (rptr.=.fgets(ptr,.n,.stream)).= |
| 38c0 | 3d 20 4e 55 4c 4c 29 20 26 26 20 66 65 72 72 6f 72 28 73 74 72 65 61 6d 29 29 0a 09 61 70 70 5f | =.NULL).&&.ferror(stream))..app_ |
| 38e0 | 65 72 72 6f 72 28 22 46 67 65 74 73 20 65 72 72 6f 72 22 29 3b 0a 0a 20 20 20 20 72 65 74 75 72 | error("Fgets.error");......retur |
| 3900 | 6e 20 72 70 74 72 3b 0a 7d 0a 0a 46 49 4c 45 20 2a 46 6f 70 65 6e 28 63 6f 6e 73 74 20 63 68 61 | n.rptr;.}..FILE.*Fopen(const.cha |
| 3920 | 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6d 6f 64 65 29 20 0a | r.*filename,.const.char.*mode).. |
| 3940 | 7b 0a 20 20 20 20 46 49 4c 45 20 2a 66 70 3b 0a 0a 20 20 20 20 69 66 20 28 28 66 70 20 3d 20 66 | {.....FILE.*fp;......if.((fp.=.f |
| 3960 | 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 6d 6f 64 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 | open(filename,.mode)).==.NULL).. |
| 3980 | 75 6e 69 78 5f 65 72 72 6f 72 28 22 46 6f 70 65 6e 20 65 72 72 6f 72 22 29 3b 0a 0a 20 20 20 20 | unix_error("Fopen.error");...... |
| 39a0 | 72 65 74 75 72 6e 20 66 70 3b 0a 7d 0a 0a 76 6f 69 64 20 46 70 75 74 73 28 63 6f 6e 73 74 20 63 | return.fp;.}..void.Fputs(const.c |
| 39c0 | 68 61 72 20 2a 70 74 72 2c 20 46 49 4c 45 20 2a 73 74 72 65 61 6d 29 20 0a 7b 0a 20 20 20 20 69 | har.*ptr,.FILE.*stream)..{.....i |
| 39e0 | 66 20 28 66 70 75 74 73 28 70 74 72 2c 20 73 74 72 65 61 6d 29 20 3d 3d 20 45 4f 46 29 0a 09 75 | f.(fputs(ptr,.stream).==.EOF)..u |
| 3a00 | 6e 69 78 5f 65 72 72 6f 72 28 22 46 70 75 74 73 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 73 69 7a | nix_error("Fputs.error");.}..siz |
| 3a20 | 65 5f 74 20 46 72 65 61 64 28 76 6f 69 64 20 2a 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 | e_t.Fread(void.*ptr,.size_t.size |
| 3a40 | 2c 20 73 69 7a 65 5f 74 20 6e 6d 65 6d 62 2c 20 46 49 4c 45 20 2a 73 74 72 65 61 6d 29 20 0a 7b | ,.size_t.nmemb,.FILE.*stream)..{ |
| 3a60 | 0a 20 20 20 20 73 69 7a 65 5f 74 20 6e 3b 0a 0a 20 20 20 20 69 66 20 28 28 28 6e 20 3d 20 66 72 | .....size_t.n;......if.(((n.=.fr |
| 3a80 | 65 61 64 28 70 74 72 2c 20 73 69 7a 65 2c 20 6e 6d 65 6d 62 2c 20 73 74 72 65 61 6d 29 29 20 3c | ead(ptr,.size,.nmemb,.stream)).< |
| 3aa0 | 20 6e 6d 65 6d 62 29 20 26 26 20 66 65 72 72 6f 72 28 73 74 72 65 61 6d 29 29 20 0a 09 75 6e 69 | .nmemb).&&.ferror(stream))...uni |
| 3ac0 | 78 5f 65 72 72 6f 72 28 22 46 72 65 61 64 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 | x_error("Fread.error");.....retu |
| 3ae0 | 72 6e 20 6e 3b 0a 7d 0a 0a 76 6f 69 64 20 46 77 72 69 74 65 28 63 6f 6e 73 74 20 76 6f 69 64 20 | rn.n;.}..void.Fwrite(const.void. |
| 3b00 | 2a 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c 20 73 69 7a 65 5f 74 20 6e 6d 65 6d 62 2c | *ptr,.size_t.size,.size_t.nmemb, |
| 3b20 | 20 46 49 4c 45 20 2a 73 74 72 65 61 6d 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 66 77 72 69 74 65 | .FILE.*stream)..{.....if.(fwrite |
| 3b40 | 28 70 74 72 2c 20 73 69 7a 65 2c 20 6e 6d 65 6d 62 2c 20 73 74 72 65 61 6d 29 20 3c 20 6e 6d 65 | (ptr,.size,.nmemb,.stream).<.nme |
| 3b60 | 6d 62 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 46 77 72 69 74 65 20 65 72 72 6f 72 22 29 3b | mb)..unix_error("Fwrite.error"); |
| 3b80 | 0a 7d 0a 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .}.../************************** |
| 3ba0 | 2a 2a 20 0a 20 2a 20 53 6f 63 6b 65 74 73 20 69 6e 74 65 72 66 61 63 65 20 77 72 61 70 70 65 72 | **...*.Sockets.interface.wrapper |
| 3bc0 | 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f | s..****************************/ |
| 3be0 | 0a 0a 69 6e 74 20 53 6f 63 6b 65 74 28 69 6e 74 20 64 6f 6d 61 69 6e 2c 20 69 6e 74 20 74 79 70 | ..int.Socket(int.domain,.int.typ |
| 3c00 | 65 2c 20 69 6e 74 20 70 72 6f 74 6f 63 6f 6c 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a | e,.int.protocol)..{.....int.rc;. |
| 3c20 | 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 73 6f 63 6b 65 74 28 64 6f 6d 61 69 6e 2c 20 74 79 | .....if.((rc.=.socket(domain,.ty |
| 3c40 | 70 65 2c 20 70 72 6f 74 6f 63 6f 6c 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 | pe,.protocol)).<.0)..unix_error( |
| 3c60 | 22 53 6f 63 6b 65 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a | "Socket.error");.....return.rc;. |
| 3c80 | 7d 0a 0a 76 6f 69 64 20 53 65 74 73 6f 63 6b 6f 70 74 28 69 6e 74 20 73 2c 20 69 6e 74 20 6c 65 | }..void.Setsockopt(int.s,.int.le |
| 3ca0 | 76 65 6c 2c 20 69 6e 74 20 6f 70 74 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 6f 70 | vel,.int.optname,.const.void.*op |
| 3cc0 | 74 76 61 6c 2c 20 69 6e 74 20 6f 70 74 6c 65 6e 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b | tval,.int.optlen)..{.....int.rc; |
| 3ce0 | 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 73 65 74 73 6f 63 6b 6f 70 74 28 73 2c 20 6c 65 | ......if.((rc.=.setsockopt(s,.le |
| 3d00 | 76 65 6c 2c 20 6f 70 74 6e 61 6d 65 2c 20 6f 70 74 76 61 6c 2c 20 6f 70 74 6c 65 6e 29 29 20 3c | vel,.optname,.optval,.optlen)).< |
| 3d20 | 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 65 74 73 6f 63 6b 6f 70 74 20 65 72 72 6f | .0)..unix_error("Setsockopt.erro |
| 3d40 | 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 42 69 6e 64 28 69 6e 74 20 73 6f 63 6b 66 64 2c 20 73 74 | r");.}..void.Bind(int.sockfd,.st |
| 3d60 | 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 2a 6d 79 5f 61 64 64 72 2c 20 69 6e 74 20 61 64 64 72 | ruct.sockaddr.*my_addr,.int.addr |
| 3d80 | 6c 65 6e 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 | len)..{.....int.rc;......if.((rc |
| 3da0 | 20 3d 20 62 69 6e 64 28 73 6f 63 6b 66 64 2c 20 6d 79 5f 61 64 64 72 2c 20 61 64 64 72 6c 65 6e | .=.bind(sockfd,.my_addr,.addrlen |
| 3dc0 | 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 42 69 6e 64 20 65 72 72 6f 72 22 | )).<.0)..unix_error("Bind.error" |
| 3de0 | 29 3b 0a 7d 0a 0a 76 6f 69 64 20 4c 69 73 74 65 6e 28 69 6e 74 20 73 2c 20 69 6e 74 20 62 61 63 | );.}..void.Listen(int.s,.int.bac |
| 3e00 | 6b 6c 6f 67 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 | klog)..{.....int.rc;......if.((r |
| 3e20 | 63 20 3d 20 6c 69 73 74 65 6e 28 73 2c 20 20 62 61 63 6b 6c 6f 67 29 29 20 3c 20 30 29 0a 09 75 | c.=.listen(s,..backlog)).<.0)..u |
| 3e40 | 6e 69 78 5f 65 72 72 6f 72 28 22 4c 69 73 74 65 6e 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 69 6e | nix_error("Listen.error");.}..in |
| 3e60 | 74 20 41 63 63 65 70 74 28 69 6e 74 20 73 2c 20 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 | t.Accept(int.s,.struct.sockaddr. |
| 3e80 | 2a 61 64 64 72 2c 20 73 6f 63 6b 6c 65 6e 5f 74 20 2a 61 64 64 72 6c 65 6e 29 20 0a 7b 0a 20 20 | *addr,.socklen_t.*addrlen)..{... |
| 3ea0 | 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 61 63 63 65 70 74 28 | ..int.rc;......if.((rc.=.accept( |
| 3ec0 | 73 2c 20 61 64 64 72 2c 20 61 64 64 72 6c 65 6e 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 | s,.addr,.addrlen)).<.0)..unix_er |
| 3ee0 | 72 6f 72 28 22 41 63 63 65 70 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 | ror("Accept.error");.....return. |
| 3f00 | 72 63 3b 0a 7d 0a 0a 76 6f 69 64 20 43 6f 6e 6e 65 63 74 28 69 6e 74 20 73 6f 63 6b 66 64 2c 20 | rc;.}..void.Connect(int.sockfd,. |
| 3f20 | 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 2a 73 65 72 76 5f 61 64 64 72 2c 20 69 6e 74 20 | struct.sockaddr.*serv_addr,.int. |
| 3f40 | 61 64 64 72 6c 65 6e 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 | addrlen)..{.....int.rc;......if. |
| 3f60 | 28 28 72 63 20 3d 20 63 6f 6e 6e 65 63 74 28 73 6f 63 6b 66 64 2c 20 73 65 72 76 5f 61 64 64 72 | ((rc.=.connect(sockfd,.serv_addr |
| 3f80 | 2c 20 61 64 64 72 6c 65 6e 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 43 6f | ,.addrlen)).<.0)..unix_error("Co |
| 3fa0 | 6e 6e 65 63 74 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | nnect.error");.}../************* |
| 3fc0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 50 72 6f 74 6f 63 6f 6c 2d 69 | ******************..*.Protocol-i |
| 3fe0 | 6e 64 65 70 65 6e 64 65 6e 74 20 77 72 61 70 70 65 72 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ndependent.wrappers..*********** |
| 4000 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 | ********************/./*.$begin. |
| 4020 | 67 65 74 61 64 64 72 69 6e 66 6f 20 2a 2f 0a 76 6f 69 64 20 47 65 74 61 64 64 72 69 6e 66 6f 28 | getaddrinfo.*/.void.Getaddrinfo( |
| 4040 | 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 6f 64 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 65 | const.char.*node,.const.char.*se |
| 4060 | 72 76 69 63 65 2c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 73 | rvice,...................const.s |
| 4080 | 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f 20 2a 68 69 6e 74 73 2c 20 73 74 72 75 63 74 20 61 64 | truct.addrinfo.*hints,.struct.ad |
| 40a0 | 64 72 69 6e 66 6f 20 2a 2a 72 65 73 29 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 | drinfo.**res).{.....int.rc;..... |
| 40c0 | 20 69 66 20 28 28 72 63 20 3d 20 67 65 74 61 64 64 72 69 6e 66 6f 28 6e 6f 64 65 2c 20 73 65 72 | .if.((rc.=.getaddrinfo(node,.ser |
| 40e0 | 76 69 63 65 2c 20 68 69 6e 74 73 2c 20 72 65 73 29 29 20 21 3d 20 30 29 20 0a 20 20 20 20 20 20 | vice,.hints,.res)).!=.0)........ |
| 4100 | 20 20 67 61 69 5f 65 72 72 6f 72 28 72 63 2c 20 22 47 65 74 61 64 64 72 69 6e 66 6f 20 65 72 72 | ..gai_error(rc,."Getaddrinfo.err |
| 4120 | 6f 72 22 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 67 65 74 61 64 64 72 69 6e 66 6f 20 2a 2f 0a 0a | or");.}./*.$end.getaddrinfo.*/.. |
| 4140 | 76 6f 69 64 20 47 65 74 6e 61 6d 65 69 6e 66 6f 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 73 6f | void.Getnameinfo(const.struct.so |
| 4160 | 63 6b 61 64 64 72 20 2a 73 61 2c 20 73 6f 63 6b 6c 65 6e 5f 74 20 73 61 6c 65 6e 2c 20 63 68 61 | ckaddr.*sa,.socklen_t.salen,.cha |
| 4180 | 72 20 2a 68 6f 73 74 2c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 5f | r.*host,...................size_ |
| 41a0 | 74 20 68 6f 73 74 6c 65 6e 2c 20 63 68 61 72 20 2a 73 65 72 76 2c 20 73 69 7a 65 5f 74 20 73 65 | t.hostlen,.char.*serv,.size_t.se |
| 41c0 | 72 76 6c 65 6e 2c 20 69 6e 74 20 66 6c 61 67 73 29 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a | rvlen,.int.flags).{.....int.rc;. |
| 41e0 | 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 67 65 74 6e 61 6d 65 69 6e 66 6f 28 73 61 2c 20 73 | .....if.((rc.=.getnameinfo(sa,.s |
| 4200 | 61 6c 65 6e 2c 20 68 6f 73 74 2c 20 68 6f 73 74 6c 65 6e 2c 20 73 65 72 76 2c 20 0a 20 20 20 20 | alen,.host,.hostlen,.serv,...... |
| 4220 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 72 76 6c 65 6e 2c 20 66 | ......................servlen,.f |
| 4240 | 6c 61 67 73 29 29 20 21 3d 20 30 29 20 0a 20 20 20 20 20 20 20 20 67 61 69 5f 65 72 72 6f 72 28 | lags)).!=.0)..........gai_error( |
| 4260 | 72 63 2c 20 22 47 65 74 6e 61 6d 65 69 6e 66 6f 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 | rc,."Getnameinfo.error");.}..voi |
| 4280 | 64 20 46 72 65 65 61 64 64 72 69 6e 66 6f 28 73 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f 20 2a | d.Freeaddrinfo(struct.addrinfo.* |
| 42a0 | 72 65 73 29 0a 7b 0a 20 20 20 20 66 72 65 65 61 64 64 72 69 6e 66 6f 28 72 65 73 29 3b 0a 7d 0a | res).{.....freeaddrinfo(res);.}. |
| 42c0 | 0a 76 6f 69 64 20 49 6e 65 74 5f 6e 74 6f 70 28 69 6e 74 20 61 66 2c 20 63 6f 6e 73 74 20 76 6f | .void.Inet_ntop(int.af,.const.vo |
| 42e0 | 69 64 20 2a 73 72 63 2c 20 63 68 61 72 20 2a 64 73 74 2c 20 73 6f 63 6b 6c 65 6e 5f 74 20 73 69 | id.*src,.char.*dst,.socklen_t.si |
| 4300 | 7a 65 29 0a 7b 0a 20 20 20 20 69 66 20 28 21 69 6e 65 74 5f 6e 74 6f 70 28 61 66 2c 20 73 72 63 | ze).{.....if.(!inet_ntop(af,.src |
| 4320 | 2c 20 64 73 74 2c 20 73 69 7a 65 29 29 0a 20 20 20 20 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 | ,.dst,.size)).........unix_error |
| 4340 | 28 22 49 6e 65 74 5f 6e 74 6f 70 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 49 6e 65 | ("Inet_ntop.error");.}..void.Ine |
| 4360 | 74 5f 70 74 6f 6e 28 69 6e 74 20 61 66 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 72 63 2c 20 | t_pton(int.af,.const.char.*src,. |
| 4380 | 76 6f 69 64 20 2a 64 73 74 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 72 | void.*dst)..{.....int.rc;......r |
| 43a0 | 63 20 3d 20 69 6e 65 74 5f 70 74 6f 6e 28 61 66 2c 20 73 72 63 2c 20 64 73 74 29 3b 0a 20 20 20 | c.=.inet_pton(af,.src,.dst);.... |
| 43c0 | 20 69 66 20 28 72 63 20 3d 3d 20 30 29 0a 09 61 70 70 5f 65 72 72 6f 72 28 22 69 6e 65 74 5f 70 | .if.(rc.==.0)..app_error("inet_p |
| 43e0 | 74 6f 6e 20 65 72 72 6f 72 3a 20 69 6e 76 61 6c 69 64 20 64 6f 74 74 65 64 2d 64 65 63 69 6d 61 | ton.error:.invalid.dotted-decima |
| 4400 | 6c 20 61 64 64 72 65 73 73 22 29 3b 0a 20 20 20 20 65 6c 73 65 20 69 66 20 28 72 63 20 3c 20 30 | l.address");.....else.if.(rc.<.0 |
| 4420 | 29 0a 20 20 20 20 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 49 6e 65 74 5f 70 74 6f 6e 20 | ).........unix_error("Inet_pton. |
| 4440 | 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | error");.}../******************* |
| 4460 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 44 4e 53 20 | ************************..*.DNS. |
| 4480 | 69 6e 74 65 72 66 61 63 65 20 77 72 61 70 70 65 72 73 2e 20 0a 20 2a 0a 20 2a 20 4e 4f 54 45 3a | interface.wrappers....*..*.NOTE: |
| 44a0 | 20 54 68 65 73 65 20 61 72 65 20 6f 62 73 6f 6c 65 74 65 20 62 65 63 61 75 73 65 20 74 68 65 79 | .These.are.obsolete.because.they |
| 44c0 | 20 61 72 65 20 6e 6f 74 20 74 68 72 65 61 64 20 73 61 66 65 2e 20 55 73 65 0a 20 2a 20 67 65 74 | .are.not.thread.safe..Use..*.get |
| 44e0 | 61 64 64 72 69 6e 66 6f 20 61 6e 64 20 67 65 74 6e 61 6d 65 69 6e 66 6f 20 69 6e 73 74 65 61 64 | addrinfo.and.getnameinfo.instead |
| 4500 | 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ..****************************** |
| 4520 | 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 24 62 65 67 69 6e 20 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 20 | *****/../*.$begin.gethostbyname. |
| 4540 | 2a 2f 0a 73 74 72 75 63 74 20 68 6f 73 74 65 6e 74 20 2a 47 65 74 68 6f 73 74 62 79 6e 61 6d 65 | */.struct.hostent.*Gethostbyname |
| 4560 | 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 29 20 0a 7b 0a 20 20 20 20 73 74 72 75 63 74 | (const.char.*name)..{.....struct |
| 4580 | 20 68 6f 73 74 65 6e 74 20 2a 70 3b 0a 0a 20 20 20 20 69 66 20 28 28 70 20 3d 20 67 65 74 68 6f | .hostent.*p;......if.((p.=.getho |
| 45a0 | 73 74 62 79 6e 61 6d 65 28 6e 61 6d 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 64 6e 73 5f 65 72 | stbyname(name)).==.NULL)..dns_er |
| 45c0 | 72 6f 72 28 22 47 65 74 68 6f 73 74 62 79 6e 61 6d 65 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 | ror("Gethostbyname.error");..... |
| 45e0 | 72 65 74 75 72 6e 20 70 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 67 65 74 68 6f 73 74 62 79 6e 61 6d | return.p;.}./*.$end.gethostbynam |
| 4600 | 65 20 2a 2f 0a 0a 73 74 72 75 63 74 20 68 6f 73 74 65 6e 74 20 2a 47 65 74 68 6f 73 74 62 79 61 | e.*/..struct.hostent.*Gethostbya |
| 4620 | 64 64 72 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 61 64 64 72 2c 20 69 6e 74 20 6c 65 6e 2c 20 69 | ddr(const.char.*addr,.int.len,.i |
| 4640 | 6e 74 20 74 79 70 65 29 20 0a 7b 0a 20 20 20 20 73 74 72 75 63 74 20 68 6f 73 74 65 6e 74 20 2a | nt.type)..{.....struct.hostent.* |
| 4660 | 70 3b 0a 0a 20 20 20 20 69 66 20 28 28 70 20 3d 20 67 65 74 68 6f 73 74 62 79 61 64 64 72 28 61 | p;......if.((p.=.gethostbyaddr(a |
| 4680 | 64 64 72 2c 20 6c 65 6e 2c 20 74 79 70 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 64 6e 73 5f 65 | ddr,.len,.type)).==.NULL)..dns_e |
| 46a0 | 72 72 6f 72 28 22 47 65 74 68 6f 73 74 62 79 61 64 64 72 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 | rror("Gethostbyaddr.error");.... |
| 46c0 | 20 72 65 74 75 72 6e 20 70 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .return.p;.}../***************** |
| 46e0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a | *******************************. |
| 4700 | 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 50 74 68 72 65 61 64 73 20 74 68 72 65 61 64 20 | .*.Wrappers.for.Pthreads.thread. |
| 4720 | 63 6f 6e 74 72 6f 6c 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | control.functions..************* |
| 4740 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| 4760 | 2a 2a 2a 2f 0a 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 63 72 65 61 74 65 28 70 74 68 72 65 61 | ***/..void.Pthread_create(pthrea |
| 4780 | 64 5f 74 20 2a 74 69 64 70 2c 20 70 74 68 72 65 61 64 5f 61 74 74 72 5f 74 20 2a 61 74 74 72 70 | d_t.*tidp,.pthread_attr_t.*attrp |
| 47a0 | 2c 20 0a 09 09 20 20 20 20 76 6f 69 64 20 2a 20 28 2a 72 6f 75 74 69 6e 65 29 28 76 6f 69 64 20 | ,........void.*.(*routine)(void. |
| 47c0 | 2a 29 2c 20 76 6f 69 64 20 2a 61 72 67 70 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a | *),.void.*argp)..{.....int.rc;.. |
| 47e0 | 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 70 74 68 72 65 61 64 5f 63 72 65 61 74 65 28 74 69 64 | ....if.((rc.=.pthread_create(tid |
| 4800 | 70 2c 20 61 74 74 72 70 2c 20 72 6f 75 74 69 6e 65 2c 20 61 72 67 70 29 29 20 21 3d 20 30 29 0a | p,.attrp,.routine,.argp)).!=.0). |
| 4820 | 09 70 6f 73 69 78 5f 65 72 72 6f 72 28 72 63 2c 20 22 50 74 68 72 65 61 64 5f 63 72 65 61 74 65 | .posix_error(rc,."Pthread_create |
| 4840 | 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 63 61 6e 63 65 6c | .error");.}..void.Pthread_cancel |
| 4860 | 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 29 20 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 | (pthread_t.tid).{.....int.rc;... |
| 4880 | 20 20 20 69 66 20 28 28 72 63 20 3d 20 70 74 68 72 65 61 64 5f 63 61 6e 63 65 6c 28 74 69 64 29 | ...if.((rc.=.pthread_cancel(tid) |
| 48a0 | 29 20 21 3d 20 30 29 0a 09 70 6f 73 69 78 5f 65 72 72 6f 72 28 72 63 2c 20 22 50 74 68 72 65 61 | ).!=.0)..posix_error(rc,."Pthrea |
| 48c0 | 64 5f 63 61 6e 63 65 6c 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 50 74 68 72 65 61 | d_cancel.error");.}..void.Pthrea |
| 48e0 | 64 5f 6a 6f 69 6e 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 2c 20 76 6f 69 64 20 2a 2a 74 68 72 | d_join(pthread_t.tid,.void.**thr |
| 4900 | 65 61 64 5f 72 65 74 75 72 6e 29 20 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 | ead_return).{.....int.rc;......i |
| 4920 | 66 20 28 28 72 63 20 3d 20 70 74 68 72 65 61 64 5f 6a 6f 69 6e 28 74 69 64 2c 20 74 68 72 65 61 | f.((rc.=.pthread_join(tid,.threa |
| 4940 | 64 5f 72 65 74 75 72 6e 29 29 20 21 3d 20 30 29 0a 09 70 6f 73 69 78 5f 65 72 72 6f 72 28 72 63 | d_return)).!=.0)..posix_error(rc |
| 4960 | 2c 20 22 50 74 68 72 65 61 64 5f 6a 6f 69 6e 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 2f 2a 20 24 | ,."Pthread_join.error");.}../*.$ |
| 4980 | 62 65 67 69 6e 20 64 65 74 61 63 68 20 2a 2f 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 64 65 74 | begin.detach.*/.void.Pthread_det |
| 49a0 | 61 63 68 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 29 20 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b | ach(pthread_t.tid).{.....int.rc; |
| 49c0 | 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 70 74 68 72 65 61 64 5f 64 65 74 61 63 68 28 74 | ......if.((rc.=.pthread_detach(t |
| 49e0 | 69 64 29 29 20 21 3d 20 30 29 0a 09 70 6f 73 69 78 5f 65 72 72 6f 72 28 72 63 2c 20 22 50 74 68 | id)).!=.0)..posix_error(rc,."Pth |
| 4a00 | 72 65 61 64 5f 64 65 74 61 63 68 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 64 | read_detach.error");.}./*.$end.d |
| 4a20 | 65 74 61 63 68 20 2a 2f 0a 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 65 78 69 74 28 76 6f 69 64 | etach.*/..void.Pthread_exit(void |
| 4a40 | 20 2a 72 65 74 76 61 6c 29 20 7b 0a 20 20 20 20 70 74 68 72 65 61 64 5f 65 78 69 74 28 72 65 74 | .*retval).{.....pthread_exit(ret |
| 4a60 | 76 61 6c 29 3b 0a 7d 0a 0a 70 74 68 72 65 61 64 5f 74 20 50 74 68 72 65 61 64 5f 73 65 6c 66 28 | val);.}..pthread_t.Pthread_self( |
| 4a80 | 76 6f 69 64 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 70 74 68 72 65 61 64 5f 73 65 6c 66 28 | void).{.....return.pthread_self( |
| 4aa0 | 29 3b 0a 7d 0a 20 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 6f 6e 63 65 28 70 74 68 72 65 61 64 | );.}...void.Pthread_once(pthread |
| 4ac0 | 5f 6f 6e 63 65 5f 74 20 2a 6f 6e 63 65 5f 63 6f 6e 74 72 6f 6c 2c 20 76 6f 69 64 20 28 2a 69 6e | _once_t.*once_control,.void.(*in |
| 4ae0 | 69 74 5f 66 75 6e 63 74 69 6f 6e 29 28 29 29 20 7b 0a 20 20 20 20 70 74 68 72 65 61 64 5f 6f 6e | it_function)()).{.....pthread_on |
| 4b00 | 63 65 28 6f 6e 63 65 5f 63 6f 6e 74 72 6f 6c 2c 20 69 6e 69 74 5f 66 75 6e 63 74 69 6f 6e 29 3b | ce(once_control,.init_function); |
| 4b20 | 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .}../*************************** |
| 4b40 | 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 50 6f 73 69 78 20 73 65 6d 61 70 | ****..*.Wrappers.for.Posix.semap |
| 4b60 | 68 6f 72 65 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | hores..************************* |
| 4b80 | 2a 2a 2a 2a 2a 2a 2f 0a 0a 76 6f 69 64 20 53 65 6d 5f 69 6e 69 74 28 73 65 6d 5f 74 20 2a 73 65 | ******/..void.Sem_init(sem_t.*se |
| 4ba0 | 6d 2c 20 69 6e 74 20 70 73 68 61 72 65 64 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 76 61 6c | m,.int.pshared,.unsigned.int.val |
| 4bc0 | 75 65 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 73 65 6d 5f 69 6e 69 74 28 73 65 6d 2c 20 70 73 68 | ue)..{.....if.(sem_init(sem,.psh |
| 4be0 | 61 72 65 64 2c 20 76 61 6c 75 65 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 | ared,.value).<.0)..unix_error("S |
| 4c00 | 65 6d 5f 69 6e 69 74 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 50 28 73 65 6d 5f 74 | em_init.error");.}..void.P(sem_t |
| 4c20 | 20 2a 73 65 6d 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 73 65 6d 5f 77 61 69 74 28 73 65 6d 29 20 | .*sem)..{.....if.(sem_wait(sem). |
| 4c40 | 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 50 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a | <.0)..unix_error("P.error");.}.. |
| 4c60 | 76 6f 69 64 20 56 28 73 65 6d 5f 74 20 2a 73 65 6d 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 73 65 | void.V(sem_t.*sem)..{.....if.(se |
| 4c80 | 6d 5f 70 6f 73 74 28 73 65 6d 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 56 20 | m_post(sem).<.0)..unix_error("V. |
| 4ca0 | 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | error");.}../******************* |
| 4cc0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 54 68 65 20 52 69 6f | *********************..*.The.Rio |
| 4ce0 | 20 70 61 63 6b 61 67 65 20 2d 20 52 6f 62 75 73 74 20 49 2f 4f 20 66 75 6e 63 74 69 6f 6e 73 0a | .package.-.Robust.I/O.functions. |
| 4d00 | 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .******************************* |
| 4d20 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a 20 2a 20 72 69 6f 5f 72 65 61 64 6e 20 2d 20 52 6f | *********/../*..*.rio_readn.-.Ro |
| 4d40 | 62 75 73 74 6c 79 20 72 65 61 64 20 6e 20 62 79 74 65 73 20 28 75 6e 62 75 66 66 65 72 65 64 29 | bustly.read.n.bytes.(unbuffered) |
| 4d60 | 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 72 69 6f 5f 72 65 61 64 6e 20 2a 2f 0a 73 73 69 7a | ..*/./*.$begin.rio_readn.*/.ssiz |
| 4d80 | 65 5f 74 20 72 69 6f 5f 72 65 61 64 6e 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a 75 73 72 62 | e_t.rio_readn(int.fd,.void.*usrb |
| 4da0 | 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 20 0a 7b 0a 20 20 20 20 73 69 7a 65 5f 74 20 6e 6c 65 66 | uf,.size_t.n)..{.....size_t.nlef |
| 4dc0 | 74 20 3d 20 6e 3b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 6e 72 65 61 64 3b 0a 20 20 20 20 63 68 | t.=.n;.....ssize_t.nread;.....ch |
| 4de0 | 61 72 20 2a 62 75 66 70 20 3d 20 75 73 72 62 75 66 3b 0a 0a 20 20 20 20 77 68 69 6c 65 20 28 6e | ar.*bufp.=.usrbuf;......while.(n |
| 4e00 | 6c 65 66 74 20 3e 20 30 29 20 7b 0a 09 69 66 20 28 28 6e 72 65 61 64 20 3d 20 72 65 61 64 28 66 | left.>.0).{..if.((nread.=.read(f |
| 4e20 | 64 2c 20 62 75 66 70 2c 20 6e 6c 65 66 74 29 29 20 3c 20 30 29 20 7b 0a 09 20 20 20 20 69 66 20 | d,.bufp,.nleft)).<.0).{......if. |
| 4e40 | 28 65 72 72 6e 6f 20 3d 3d 20 45 49 4e 54 52 29 20 2f 2a 20 49 6e 74 65 72 72 75 70 74 65 64 20 | (errno.==.EINTR)./*.Interrupted. |
| 4e60 | 62 79 20 73 69 67 20 68 61 6e 64 6c 65 72 20 72 65 74 75 72 6e 20 2a 2f 0a 09 09 6e 72 65 61 64 | by.sig.handler.return.*/...nread |
| 4e80 | 20 3d 20 30 3b 20 20 20 20 20 20 2f 2a 20 61 6e 64 20 63 61 6c 6c 20 72 65 61 64 28 29 20 61 67 | .=.0;....../*.and.call.read().ag |
| 4ea0 | 61 69 6e 20 2a 2f 0a 09 20 20 20 20 65 6c 73 65 0a 09 09 72 65 74 75 72 6e 20 2d 31 3b 20 20 20 | ain.*/......else...return.-1;... |
| 4ec0 | 20 20 20 2f 2a 20 65 72 72 6e 6f 20 73 65 74 20 62 79 20 72 65 61 64 28 29 20 2a 2f 20 0a 09 7d | .../*.errno.set.by.read().*/...} |
| 4ee0 | 20 0a 09 65 6c 73 65 20 69 66 20 28 6e 72 65 61 64 20 3d 3d 20 30 29 0a 09 20 20 20 20 62 72 65 | ...else.if.(nread.==.0)......bre |
| 4f00 | 61 6b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 45 4f 46 20 2a 2f 0a 09 6e 6c 65 66 | ak;............../*.EOF.*/..nlef |
| 4f20 | 74 20 2d 3d 20 6e 72 65 61 64 3b 0a 09 62 75 66 70 20 2b 3d 20 6e 72 65 61 64 3b 0a 20 20 20 20 | t.-=.nread;..bufp.+=.nread;..... |
| 4f40 | 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 28 6e 20 2d 20 6e 6c 65 66 74 29 3b 20 20 20 20 20 20 20 | }.....return.(n.-.nleft);....... |
| 4f60 | 20 20 2f 2a 20 52 65 74 75 72 6e 20 3e 3d 20 30 20 2a 2f 0a 7d 0a 2f 2a 20 24 65 6e 64 20 72 69 | ../*.Return.>=.0.*/.}./*.$end.ri |
| 4f80 | 6f 5f 72 65 61 64 6e 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 72 69 6f 5f 77 72 69 74 65 6e 20 2d 20 52 | o_readn.*/../*..*.rio_writen.-.R |
| 4fa0 | 6f 62 75 73 74 6c 79 20 77 72 69 74 65 20 6e 20 62 79 74 65 73 20 28 75 6e 62 75 66 66 65 72 65 | obustly.write.n.bytes.(unbuffere |
| 4fc0 | 64 29 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 72 69 6f 5f 77 72 69 74 65 6e 20 2a 2f 0a 73 | d)..*/./*.$begin.rio_writen.*/.s |
| 4fe0 | 73 69 7a 65 5f 74 20 72 69 6f 5f 77 72 69 74 65 6e 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a | size_t.rio_writen(int.fd,.void.* |
| 5000 | 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 20 0a 7b 0a 20 20 20 20 73 69 7a 65 5f 74 20 | usrbuf,.size_t.n)..{.....size_t. |
| 5020 | 6e 6c 65 66 74 20 3d 20 6e 3b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 6e 77 72 69 74 74 65 6e 3b | nleft.=.n;.....ssize_t.nwritten; |
| 5040 | 0a 20 20 20 20 63 68 61 72 20 2a 62 75 66 70 20 3d 20 75 73 72 62 75 66 3b 0a 0a 20 20 20 20 77 | .....char.*bufp.=.usrbuf;......w |
| 5060 | 68 69 6c 65 20 28 6e 6c 65 66 74 20 3e 20 30 29 20 7b 0a 09 69 66 20 28 28 6e 77 72 69 74 74 65 | hile.(nleft.>.0).{..if.((nwritte |
| 5080 | 6e 20 3d 20 77 72 69 74 65 28 66 64 2c 20 62 75 66 70 2c 20 6e 6c 65 66 74 29 29 20 3c 3d 20 30 | n.=.write(fd,.bufp,.nleft)).<=.0 |
| 50a0 | 29 20 7b 0a 09 20 20 20 20 69 66 20 28 65 72 72 6e 6f 20 3d 3d 20 45 49 4e 54 52 29 20 20 2f 2a | ).{......if.(errno.==.EINTR)../* |
| 50c0 | 20 49 6e 74 65 72 72 75 70 74 65 64 20 62 79 20 73 69 67 20 68 61 6e 64 6c 65 72 20 72 65 74 75 | .Interrupted.by.sig.handler.retu |
| 50e0 | 72 6e 20 2a 2f 0a 09 09 6e 77 72 69 74 74 65 6e 20 3d 20 30 3b 20 20 20 20 2f 2a 20 61 6e 64 20 | rn.*/...nwritten.=.0;..../*.and. |
| 5100 | 63 61 6c 6c 20 77 72 69 74 65 28 29 20 61 67 61 69 6e 20 2a 2f 0a 09 20 20 20 20 65 6c 73 65 0a | call.write().again.*/......else. |
| 5120 | 09 09 72 65 74 75 72 6e 20 2d 31 3b 20 20 20 20 20 20 20 2f 2a 20 65 72 72 6e 6f 20 73 65 74 20 | ..return.-1;......./*.errno.set. |
| 5140 | 62 79 20 77 72 69 74 65 28 29 20 2a 2f 0a 09 7d 0a 09 6e 6c 65 66 74 20 2d 3d 20 6e 77 72 69 74 | by.write().*/..}..nleft.-=.nwrit |
| 5160 | 74 65 6e 3b 0a 09 62 75 66 70 20 2b 3d 20 6e 77 72 69 74 74 65 6e 3b 0a 20 20 20 20 7d 0a 20 20 | ten;..bufp.+=.nwritten;.....}... |
| 5180 | 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 72 69 6f 5f 77 72 69 74 65 6e | ..return.n;.}./*.$end.rio_writen |
| 51a0 | 20 2a 2f 0a 0a 0a 2f 2a 20 0a 20 2a 20 72 69 6f 5f 72 65 61 64 20 2d 20 54 68 69 73 20 69 73 20 | .*/.../*...*.rio_read.-.This.is. |
| 51c0 | 61 20 77 72 61 70 70 65 72 20 66 6f 72 20 74 68 65 20 55 6e 69 78 20 72 65 61 64 28 29 20 66 75 | a.wrapper.for.the.Unix.read().fu |
| 51e0 | 6e 63 74 69 6f 6e 20 74 68 61 74 0a 20 2a 20 20 20 20 74 72 61 6e 73 66 65 72 73 20 6d 69 6e 28 | nction.that..*....transfers.min( |
| 5200 | 6e 2c 20 72 69 6f 5f 63 6e 74 29 20 62 79 74 65 73 20 66 72 6f 6d 20 61 6e 20 69 6e 74 65 72 6e | n,.rio_cnt).bytes.from.an.intern |
| 5220 | 61 6c 20 62 75 66 66 65 72 20 74 6f 20 61 20 75 73 65 72 0a 20 2a 20 20 20 20 62 75 66 66 65 72 | al.buffer.to.a.user..*....buffer |
| 5240 | 2c 20 77 68 65 72 65 20 6e 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 | ,.where.n.is.the.number.of.bytes |
| 5260 | 20 72 65 71 75 65 73 74 65 64 20 62 79 20 74 68 65 20 75 73 65 72 20 61 6e 64 0a 20 2a 20 20 20 | .requested.by.the.user.and..*... |
| 5280 | 20 72 69 6f 5f 63 6e 74 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 75 6e 72 65 61 64 | .rio_cnt.is.the.number.of.unread |
| 52a0 | 20 62 79 74 65 73 20 69 6e 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 66 65 72 2e 20 4f | .bytes.in.the.internal.buffer..O |
| 52c0 | 6e 0a 20 2a 20 20 20 20 65 6e 74 72 79 2c 20 72 69 6f 5f 72 65 61 64 28 29 20 72 65 66 69 6c 6c | n..*....entry,.rio_read().refill |
| 52e0 | 73 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 66 65 72 20 76 69 61 20 61 20 63 61 6c 6c | s.the.internal.buffer.via.a.call |
| 5300 | 20 74 6f 0a 20 2a 20 20 20 20 72 65 61 64 28 29 20 69 66 20 74 68 65 20 69 6e 74 65 72 6e 61 6c | .to..*....read().if.the.internal |
| 5320 | 20 62 75 66 66 65 72 20 69 73 20 65 6d 70 74 79 2e 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 | .buffer.is.empty...*/./*.$begin. |
| 5340 | 72 69 6f 5f 72 65 61 64 20 2a 2f 0a 73 74 61 74 69 63 20 73 73 69 7a 65 5f 74 20 72 69 6f 5f 72 | rio_read.*/.static.ssize_t.rio_r |
| 5360 | 65 61 64 28 72 69 6f 5f 74 20 2a 72 70 2c 20 63 68 61 72 20 2a 75 73 72 62 75 66 2c 20 73 69 7a | ead(rio_t.*rp,.char.*usrbuf,.siz |
| 5380 | 65 5f 74 20 6e 29 0a 7b 0a 20 20 20 20 69 6e 74 20 63 6e 74 3b 0a 0a 20 20 20 20 77 68 69 6c 65 | e_t.n).{.....int.cnt;......while |
| 53a0 | 20 28 72 70 2d 3e 72 69 6f 5f 63 6e 74 20 3c 3d 20 30 29 20 7b 20 20 2f 2a 20 52 65 66 69 6c 6c | .(rp->rio_cnt.<=.0).{../*.Refill |
| 53c0 | 20 69 66 20 62 75 66 20 69 73 20 65 6d 70 74 79 20 2a 2f 0a 09 72 70 2d 3e 72 69 6f 5f 63 6e 74 | .if.buf.is.empty.*/..rp->rio_cnt |
| 53e0 | 20 3d 20 72 65 61 64 28 72 70 2d 3e 72 69 6f 5f 66 64 2c 20 72 70 2d 3e 72 69 6f 5f 62 75 66 2c | .=.read(rp->rio_fd,.rp->rio_buf, |
| 5400 | 20 0a 09 09 09 20 20 20 73 69 7a 65 6f 66 28 72 70 2d 3e 72 69 6f 5f 62 75 66 29 29 3b 0a 09 69 | ........sizeof(rp->rio_buf));..i |
| 5420 | 66 20 28 72 70 2d 3e 72 69 6f 5f 63 6e 74 20 3c 20 30 29 20 7b 0a 09 20 20 20 20 69 66 20 28 65 | f.(rp->rio_cnt.<.0).{......if.(e |
| 5440 | 72 72 6e 6f 20 21 3d 20 45 49 4e 54 52 29 20 2f 2a 20 49 6e 74 65 72 72 75 70 74 65 64 20 62 79 | rrno.!=.EINTR)./*.Interrupted.by |
| 5460 | 20 73 69 67 20 68 61 6e 64 6c 65 72 20 72 65 74 75 72 6e 20 2a 2f 0a 09 09 72 65 74 75 72 6e 20 | .sig.handler.return.*/...return. |
| 5480 | 2d 31 3b 0a 09 7d 0a 09 65 6c 73 65 20 69 66 20 28 72 70 2d 3e 72 69 6f 5f 63 6e 74 20 3d 3d 20 | -1;..}..else.if.(rp->rio_cnt.==. |
| 54a0 | 30 29 20 20 2f 2a 20 45 4f 46 20 2a 2f 0a 09 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 09 65 6c | 0)../*.EOF.*/......return.0;..el |
| 54c0 | 73 65 20 0a 09 20 20 20 20 72 70 2d 3e 72 69 6f 5f 62 75 66 70 74 72 20 3d 20 72 70 2d 3e 72 69 | se.......rp->rio_bufptr.=.rp->ri |
| 54e0 | 6f 5f 62 75 66 3b 20 2f 2a 20 52 65 73 65 74 20 62 75 66 66 65 72 20 70 74 72 20 2a 2f 0a 20 20 | o_buf;./*.Reset.buffer.ptr.*/... |
| 5500 | 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 43 6f 70 79 20 6d 69 6e 28 6e 2c 20 72 70 2d 3e 72 69 6f 5f | ..}....../*.Copy.min(n,.rp->rio_ |
| 5520 | 63 6e 74 29 20 62 79 74 65 73 20 66 72 6f 6d 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 20 74 6f 20 | cnt).bytes.from.internal.buf.to. |
| 5540 | 75 73 65 72 20 62 75 66 20 2a 2f 0a 20 20 20 20 63 6e 74 20 3d 20 6e 3b 20 20 20 20 20 20 20 20 | user.buf.*/.....cnt.=.n;........ |
| 5560 | 20 20 0a 20 20 20 20 69 66 20 28 72 70 2d 3e 72 69 6f 5f 63 6e 74 20 3c 20 6e 29 20 20 20 0a 09 | .......if.(rp->rio_cnt.<.n)..... |
| 5580 | 63 6e 74 20 3d 20 72 70 2d 3e 72 69 6f 5f 63 6e 74 3b 0a 20 20 20 20 6d 65 6d 63 70 79 28 75 73 | cnt.=.rp->rio_cnt;.....memcpy(us |
| 55a0 | 72 62 75 66 2c 20 72 70 2d 3e 72 69 6f 5f 62 75 66 70 74 72 2c 20 63 6e 74 29 3b 0a 20 20 20 20 | rbuf,.rp->rio_bufptr,.cnt);..... |
| 55c0 | 72 70 2d 3e 72 69 6f 5f 62 75 66 70 74 72 20 2b 3d 20 63 6e 74 3b 0a 20 20 20 20 72 70 2d 3e 72 | rp->rio_bufptr.+=.cnt;.....rp->r |
| 55e0 | 69 6f 5f 63 6e 74 20 2d 3d 20 63 6e 74 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 63 6e 74 3b 0a 7d | io_cnt.-=.cnt;.....return.cnt;.} |
| 5600 | 0a 2f 2a 20 24 65 6e 64 20 72 69 6f 5f 72 65 61 64 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 72 69 6f 5f | ./*.$end.rio_read.*/../*..*.rio_ |
| 5620 | 72 65 61 64 69 6e 69 74 62 20 2d 20 41 73 73 6f 63 69 61 74 65 20 61 20 64 65 73 63 72 69 70 74 | readinitb.-.Associate.a.descript |
| 5640 | 6f 72 20 77 69 74 68 20 61 20 72 65 61 64 20 62 75 66 66 65 72 20 61 6e 64 20 72 65 73 65 74 20 | or.with.a.read.buffer.and.reset. |
| 5660 | 62 75 66 66 65 72 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 72 69 6f 5f 72 65 61 64 69 6e 69 | buffer..*/./*.$begin.rio_readini |
| 5680 | 74 62 20 2a 2f 0a 76 6f 69 64 20 72 69 6f 5f 72 65 61 64 69 6e 69 74 62 28 72 69 6f 5f 74 20 2a | tb.*/.void.rio_readinitb(rio_t.* |
| 56a0 | 72 70 2c 20 69 6e 74 20 66 64 29 20 0a 7b 0a 20 20 20 20 72 70 2d 3e 72 69 6f 5f 66 64 20 3d 20 | rp,.int.fd)..{.....rp->rio_fd.=. |
| 56c0 | 66 64 3b 20 20 0a 20 20 20 20 72 70 2d 3e 72 69 6f 5f 63 6e 74 20 3d 20 30 3b 20 20 0a 20 20 20 | fd;.......rp->rio_cnt.=.0;...... |
| 56e0 | 20 72 70 2d 3e 72 69 6f 5f 62 75 66 70 74 72 20 3d 20 72 70 2d 3e 72 69 6f 5f 62 75 66 3b 0a 7d | .rp->rio_bufptr.=.rp->rio_buf;.} |
| 5700 | 0a 2f 2a 20 24 65 6e 64 20 72 69 6f 5f 72 65 61 64 69 6e 69 74 62 20 2a 2f 0a 0a 2f 2a 0a 20 2a | ./*.$end.rio_readinitb.*/../*..* |
| 5720 | 20 72 69 6f 5f 72 65 61 64 6e 62 20 2d 20 52 6f 62 75 73 74 6c 79 20 72 65 61 64 20 6e 20 62 79 | .rio_readnb.-.Robustly.read.n.by |
| 5740 | 74 65 73 20 28 62 75 66 66 65 72 65 64 29 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 72 69 6f | tes.(buffered)..*/./*.$begin.rio |
| 5760 | 5f 72 65 61 64 6e 62 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 72 69 6f 5f 72 65 61 64 6e 62 28 72 69 | _readnb.*/.ssize_t.rio_readnb(ri |
| 5780 | 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 | o_t.*rp,.void.*usrbuf,.size_t.n) |
| 57a0 | 20 0a 7b 0a 20 20 20 20 73 69 7a 65 5f 74 20 6e 6c 65 66 74 20 3d 20 6e 3b 0a 20 20 20 20 73 73 | ..{.....size_t.nleft.=.n;.....ss |
| 57c0 | 69 7a 65 5f 74 20 6e 72 65 61 64 3b 0a 20 20 20 20 63 68 61 72 20 2a 62 75 66 70 20 3d 20 75 73 | ize_t.nread;.....char.*bufp.=.us |
| 57e0 | 72 62 75 66 3b 0a 20 20 20 20 0a 20 20 20 20 77 68 69 6c 65 20 28 6e 6c 65 66 74 20 3e 20 30 29 | rbuf;..........while.(nleft.>.0) |
| 5800 | 20 7b 0a 09 69 66 20 28 28 6e 72 65 61 64 20 3d 20 72 69 6f 5f 72 65 61 64 28 72 70 2c 20 62 75 | .{..if.((nread.=.rio_read(rp,.bu |
| 5820 | 66 70 2c 20 6e 6c 65 66 74 29 29 20 3c 20 30 29 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 | fp,.nleft)).<.0)..............re |
| 5840 | 74 75 72 6e 20 2d 31 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 65 72 72 6e 6f 20 73 65 74 20 62 | turn.-1;........../*.errno.set.b |
| 5860 | 79 20 72 65 61 64 28 29 20 2a 2f 20 0a 09 65 6c 73 65 20 69 66 20 28 6e 72 65 61 64 20 3d 3d 20 | y.read().*/...else.if.(nread.==. |
| 5880 | 30 29 0a 09 20 20 20 20 62 72 65 61 6b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 45 | 0)......break;............../*.E |
| 58a0 | 4f 46 20 2a 2f 0a 09 6e 6c 65 66 74 20 2d 3d 20 6e 72 65 61 64 3b 0a 09 62 75 66 70 20 2b 3d 20 | OF.*/..nleft.-=.nread;..bufp.+=. |
| 58c0 | 6e 72 65 61 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 28 6e 20 2d 20 6e 6c 65 | nread;.....}.....return.(n.-.nle |
| 58e0 | 66 74 29 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 72 65 74 75 72 6e 20 3e 3d 20 30 20 2a 2f 0a 7d | ft);........./*.return.>=.0.*/.} |
| 5900 | 0a 2f 2a 20 24 65 6e 64 20 72 69 6f 5f 72 65 61 64 6e 62 20 2a 2f 0a 0a 2f 2a 20 0a 20 2a 20 72 | ./*.$end.rio_readnb.*/../*...*.r |
| 5920 | 69 6f 5f 72 65 61 64 6c 69 6e 65 62 20 2d 20 52 6f 62 75 73 74 6c 79 20 72 65 61 64 20 61 20 74 | io_readlineb.-.Robustly.read.a.t |
| 5940 | 65 78 74 20 6c 69 6e 65 20 28 62 75 66 66 65 72 65 64 29 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 | ext.line.(buffered)..*/./*.$begi |
| 5960 | 6e 20 72 69 6f 5f 72 65 61 64 6c 69 6e 65 62 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 72 69 6f 5f 72 | n.rio_readlineb.*/.ssize_t.rio_r |
| 5980 | 65 61 64 6c 69 6e 65 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 | eadlineb(rio_t.*rp,.void.*usrbuf |
| 59a0 | 2c 20 73 69 7a 65 5f 74 20 6d 61 78 6c 65 6e 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 6e 2c 20 72 | ,.size_t.maxlen)..{.....int.n,.r |
| 59c0 | 63 3b 0a 20 20 20 20 63 68 61 72 20 63 2c 20 2a 62 75 66 70 20 3d 20 75 73 72 62 75 66 3b 0a 0a | c;.....char.c,.*bufp.=.usrbuf;.. |
| 59e0 | 20 20 20 20 66 6f 72 20 28 6e 20 3d 20 31 3b 20 6e 20 3c 20 6d 61 78 6c 65 6e 3b 20 6e 2b 2b 29 | ....for.(n.=.1;.n.<.maxlen;.n++) |
| 5a00 | 20 7b 20 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 72 69 6f 5f 72 65 61 64 28 72 | .{..........if.((rc.=.rio_read(r |
| 5a20 | 70 2c 20 26 63 2c 20 31 29 29 20 3d 3d 20 31 29 20 7b 0a 09 20 20 20 20 2a 62 75 66 70 2b 2b 20 | p,.&c,.1)).==.1).{......*bufp++. |
| 5a40 | 3d 20 63 3b 0a 09 20 20 20 20 69 66 20 28 63 20 3d 3d 20 27 5c 6e 27 29 20 7b 0a 20 20 20 20 20 | =.c;......if.(c.==.'\n').{...... |
| 5a60 | 20 20 20 20 20 20 20 20 20 20 20 6e 2b 2b 3b 0a 20 20 20 20 20 09 09 62 72 65 61 6b 3b 0a 20 20 | ...........n++;........break;... |
| 5a80 | 20 20 20 20 20 20 20 20 20 20 7d 0a 09 7d 20 65 6c 73 65 20 69 66 20 28 72 63 20 3d 3d 20 30 29 | ..........}..}.else.if.(rc.==.0) |
| 5aa0 | 20 7b 0a 09 20 20 20 20 69 66 20 28 6e 20 3d 3d 20 31 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 20 | .{......if.(n.==.1)...return.0;. |
| 5ac0 | 2f 2a 20 45 4f 46 2c 20 6e 6f 20 64 61 74 61 20 72 65 61 64 20 2a 2f 0a 09 20 20 20 20 65 6c 73 | /*.EOF,.no.data.read.*/......els |
| 5ae0 | 65 0a 09 09 62 72 65 61 6b 3b 20 20 20 20 2f 2a 20 45 4f 46 2c 20 73 6f 6d 65 20 64 61 74 61 20 | e...break;..../*.EOF,.some.data. |
| 5b00 | 77 61 73 20 72 65 61 64 20 2a 2f 0a 09 7d 20 65 6c 73 65 0a 09 20 20 20 20 72 65 74 75 72 6e 20 | was.read.*/..}.else......return. |
| 5b20 | 2d 31 3b 09 20 20 2f 2a 20 45 72 72 6f 72 20 2a 2f 0a 20 20 20 20 7d 0a 20 20 20 20 2a 62 75 66 | -1;.../*.Error.*/.....}.....*buf |
| 5b40 | 70 20 3d 20 30 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 2d 31 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 | p.=.0;.....return.n-1;.}./*.$end |
| 5b60 | 20 72 69 6f 5f 72 65 61 64 6c 69 6e 65 62 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .rio_readlineb.*/../************ |
| 5b80 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 | **********************..*.Wrappe |
| 5ba0 | 72 73 20 66 6f 72 20 72 6f 62 75 73 74 20 49 2f 4f 20 72 6f 75 74 69 6e 65 73 0a 20 2a 2a 2a 2a | rs.for.robust.I/O.routines..**** |
| 5bc0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a | ******************************/. |
| 5be0 | 73 73 69 7a 65 5f 74 20 52 69 6f 5f 72 65 61 64 6e 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a | ssize_t.Rio_readn(int.fd,.void.* |
| 5c00 | 70 74 72 2c 20 73 69 7a 65 5f 74 20 6e 62 79 74 65 73 29 20 0a 7b 0a 20 20 20 20 73 73 69 7a 65 | ptr,.size_t.nbytes)..{.....ssize |
| 5c20 | 5f 74 20 6e 3b 0a 20 20 0a 20 20 20 20 69 66 20 28 28 6e 20 3d 20 72 69 6f 5f 72 65 61 64 6e 28 | _t.n;........if.((n.=.rio_readn( |
| 5c40 | 66 64 2c 20 70 74 72 2c 20 6e 62 79 74 65 73 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 | fd,.ptr,.nbytes)).<.0)..unix_err |
| 5c60 | 6f 72 28 22 52 69 6f 5f 72 65 61 64 6e 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 | or("Rio_readn.error");.....retur |
| 5c80 | 6e 20 6e 3b 0a 7d 0a 0a 76 6f 69 64 20 52 69 6f 5f 77 72 69 74 65 6e 28 69 6e 74 20 66 64 2c 20 | n.n;.}..void.Rio_writen(int.fd,. |
| 5ca0 | 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 20 0a 7b 0a 20 20 20 20 69 | void.*usrbuf,.size_t.n)..{.....i |
| 5cc0 | 66 20 28 72 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c 20 75 73 72 62 75 66 2c 20 6e 29 20 21 3d 20 | f.(rio_writen(fd,.usrbuf,.n).!=. |
| 5ce0 | 6e 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 52 69 6f 5f 77 72 69 74 65 6e 20 65 72 72 6f 72 | n)..unix_error("Rio_writen.error |
| 5d00 | 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 52 69 6f 5f 72 65 61 64 69 6e 69 74 62 28 72 69 6f 5f 74 20 | ");.}..void.Rio_readinitb(rio_t. |
| 5d20 | 2a 72 70 2c 20 69 6e 74 20 66 64 29 0a 7b 0a 20 20 20 20 72 69 6f 5f 72 65 61 64 69 6e 69 74 62 | *rp,.int.fd).{.....rio_readinitb |
| 5d40 | 28 72 70 2c 20 66 64 29 3b 0a 7d 20 0a 0a 73 73 69 7a 65 5f 74 20 52 69 6f 5f 72 65 61 64 6e 62 | (rp,.fd);.}...ssize_t.Rio_readnb |
| 5d60 | 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 | (rio_t.*rp,.void.*usrbuf,.size_t |
| 5d80 | 20 6e 29 20 0a 7b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 | .n)..{.....ssize_t.rc;......if.( |
| 5da0 | 28 72 63 20 3d 20 72 69 6f 5f 72 65 61 64 6e 62 28 72 70 2c 20 75 73 72 62 75 66 2c 20 6e 29 29 | (rc.=.rio_readnb(rp,.usrbuf,.n)) |
| 5dc0 | 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 52 69 6f 5f 72 65 61 64 6e 62 20 65 72 | .<.0)..unix_error("Rio_readnb.er |
| 5de0 | 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 73 73 69 7a 65 5f 74 | ror");.....return.rc;.}..ssize_t |
| 5e00 | 20 52 69 6f 5f 72 65 61 64 6c 69 6e 65 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a | .Rio_readlineb(rio_t.*rp,.void.* |
| 5e20 | 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6d 61 78 6c 65 6e 29 20 0a 7b 0a 20 20 20 20 73 73 | usrbuf,.size_t.maxlen)..{.....ss |
| 5e40 | 69 7a 65 5f 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 72 69 6f 5f 72 65 61 | ize_t.rc;......if.((rc.=.rio_rea |
| 5e60 | 64 6c 69 6e 65 62 28 72 70 2c 20 75 73 72 62 75 66 2c 20 6d 61 78 6c 65 6e 29 29 20 3c 20 30 29 | dlineb(rp,.usrbuf,.maxlen)).<.0) |
| 5e80 | 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 52 69 6f 5f 72 65 61 64 6c 69 6e 65 62 20 65 72 72 6f | ..unix_error("Rio_readlineb.erro |
| 5ea0 | 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 20 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a | r");.....return.rc;.}.../******* |
| 5ec0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 0a 20 2a 20 43 6c | *************************...*.Cl |
| 5ee0 | 69 65 6e 74 2f 73 65 72 76 65 72 20 68 65 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 2a | ient/server.helper.functions..** |
| 5f00 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a | ******************************/. |
| 5f20 | 2f 2a 0a 20 2a 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 20 2d 20 4f 70 65 6e 20 63 6f 6e 6e 65 | /*..*.open_clientfd.-.Open.conne |
| 5f40 | 63 74 69 6f 6e 20 74 6f 20 73 65 72 76 65 72 20 61 74 20 3c 68 6f 73 74 6e 61 6d 65 2c 20 70 6f | ction.to.server.at.<hostname,.po |
| 5f60 | 72 74 3e 20 61 6e 64 0a 20 2a 20 20 20 20 20 72 65 74 75 72 6e 20 61 20 73 6f 63 6b 65 74 20 64 | rt>.and..*.....return.a.socket.d |
| 5f80 | 65 73 63 72 69 70 74 6f 72 20 72 65 61 64 79 20 66 6f 72 20 72 65 61 64 69 6e 67 20 61 6e 64 20 | escriptor.ready.for.reading.and. |
| 5fa0 | 77 72 69 74 69 6e 67 2e 20 54 68 69 73 0a 20 2a 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 | writing..This..*.....function.is |
| 5fc0 | 20 72 65 65 6e 74 72 61 6e 74 20 61 6e 64 20 70 72 6f 74 6f 63 6f 6c 2d 69 6e 64 65 70 65 6e 64 | .reentrant.and.protocol-independ |
| 5fe0 | 65 6e 74 2e 0a 20 2a 0a 20 2a 20 20 20 20 20 4f 6e 20 65 72 72 6f 72 2c 20 72 65 74 75 72 6e 73 | ent...*..*.....On.error,.returns |
| 6000 | 3a 20 0a 20 2a 20 20 20 20 20 20 20 2d 32 20 66 6f 72 20 67 65 74 61 64 64 72 69 6e 66 6f 20 65 | :...*.......-2.for.getaddrinfo.e |
| 6020 | 72 72 6f 72 0a 20 2a 20 20 20 20 20 20 20 2d 31 20 77 69 74 68 20 65 72 72 6e 6f 20 73 65 74 20 | rror..*.......-1.with.errno.set. |
| 6040 | 66 6f 72 20 6f 74 68 65 72 20 65 72 72 6f 72 73 2e 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 | for.other.errors...*/./*.$begin. |
| 6060 | 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 20 2a 2f 0a 69 6e 74 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 | open_clientfd.*/.int.open_client |
| 6080 | 66 64 28 63 68 61 72 20 2a 68 6f 73 74 6e 61 6d 65 2c 20 63 68 61 72 20 2a 70 6f 72 74 29 20 7b | fd(char.*hostname,.char.*port).{ |
| 60a0 | 0a 20 20 20 20 69 6e 74 20 63 6c 69 65 6e 74 66 64 2c 20 72 63 3b 0a 20 20 20 20 73 74 72 75 63 | .....int.clientfd,.rc;.....struc |
| 60c0 | 74 20 61 64 64 72 69 6e 66 6f 20 68 69 6e 74 73 2c 20 2a 6c 69 73 74 70 2c 20 2a 70 3b 0a 0a 20 | t.addrinfo.hints,.*listp,.*p;... |
| 60e0 | 20 20 20 2f 2a 20 47 65 74 20 61 20 6c 69 73 74 20 6f 66 20 70 6f 74 65 6e 74 69 61 6c 20 73 65 | .../*.Get.a.list.of.potential.se |
| 6100 | 72 76 65 72 20 61 64 64 72 65 73 73 65 73 20 2a 2f 0a 20 20 20 20 6d 65 6d 73 65 74 28 26 68 69 | rver.addresses.*/.....memset(&hi |
| 6120 | 6e 74 73 2c 20 30 2c 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f 29 29 | nts,.0,.sizeof(struct.addrinfo)) |
| 6140 | 3b 0a 20 20 20 20 68 69 6e 74 73 2e 61 69 5f 73 6f 63 6b 74 79 70 65 20 3d 20 53 4f 43 4b 5f 53 | ;.....hints.ai_socktype.=.SOCK_S |
| 6160 | 54 52 45 41 4d 3b 20 20 2f 2a 20 4f 70 65 6e 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 2a 2f 0a | TREAM;../*.Open.a.connection.*/. |
| 6180 | 20 20 20 20 68 69 6e 74 73 2e 61 69 5f 66 6c 61 67 73 20 3d 20 41 49 5f 4e 55 4d 45 52 49 43 53 | ....hints.ai_flags.=.AI_NUMERICS |
| 61a0 | 45 52 56 3b 20 20 2f 2a 20 2e 2e 2e 20 75 73 69 6e 67 20 61 20 6e 75 6d 65 72 69 63 20 70 6f 72 | ERV;../*.....using.a.numeric.por |
| 61c0 | 74 20 61 72 67 2e 20 2a 2f 0a 20 20 20 20 68 69 6e 74 73 2e 61 69 5f 66 6c 61 67 73 20 7c 3d 20 | t.arg..*/.....hints.ai_flags.|=. |
| 61e0 | 41 49 5f 41 44 44 52 43 4f 4e 46 49 47 3b 20 20 2f 2a 20 52 65 63 6f 6d 6d 65 6e 64 65 64 20 66 | AI_ADDRCONFIG;../*.Recommended.f |
| 6200 | 6f 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 2a 2f 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 | or.connections.*/.....if.((rc.=. |
| 6220 | 67 65 74 61 64 64 72 69 6e 66 6f 28 68 6f 73 74 6e 61 6d 65 2c 20 70 6f 72 74 2c 20 26 68 69 6e | getaddrinfo(hostname,.port,.&hin |
| 6240 | 74 73 2c 20 26 6c 69 73 74 70 29 29 20 21 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 66 70 72 | ts,.&listp)).!=.0).{.........fpr |
| 6260 | 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 67 65 74 61 64 64 72 69 6e 66 6f 20 66 61 69 6c 65 64 | intf(stderr,."getaddrinfo.failed |
| 6280 | 20 28 25 73 3a 25 73 29 3a 20 25 73 5c 6e 22 2c 20 68 6f 73 74 6e 61 6d 65 2c 20 70 6f 72 74 2c | .(%s:%s):.%s\n",.hostname,.port, |
| 62a0 | 20 67 61 69 5f 73 74 72 65 72 72 6f 72 28 72 63 29 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 | .gai_strerror(rc));.........retu |
| 62c0 | 72 6e 20 2d 32 3b 0a 20 20 20 20 7d 0a 20 20 0a 20 20 20 20 2f 2a 20 57 61 6c 6b 20 74 68 65 20 | rn.-2;.....}......../*.Walk.the. |
| 62e0 | 6c 69 73 74 20 66 6f 72 20 6f 6e 65 20 74 68 61 74 20 77 65 20 63 61 6e 20 73 75 63 63 65 73 73 | list.for.one.that.we.can.success |
| 6300 | 66 75 6c 6c 79 20 63 6f 6e 6e 65 63 74 20 74 6f 20 2a 2f 0a 20 20 20 20 66 6f 72 20 28 70 20 3d | fully.connect.to.*/.....for.(p.= |
| 6320 | 20 6c 69 73 74 70 3b 20 70 3b 20 70 20 3d 20 70 2d 3e 61 69 5f 6e 65 78 74 29 20 7b 0a 20 20 20 | .listp;.p;.p.=.p->ai_next).{.... |
| 6340 | 20 20 20 20 20 2f 2a 20 43 72 65 61 74 65 20 61 20 73 6f 63 6b 65 74 20 64 65 73 63 72 69 70 74 | ...../*.Create.a.socket.descript |
| 6360 | 6f 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 63 6c 69 65 6e 74 66 64 20 3d 20 73 6f | or.*/.........if.((clientfd.=.so |
| 6380 | 63 6b 65 74 28 70 2d 3e 61 69 5f 66 61 6d 69 6c 79 2c 20 70 2d 3e 61 69 5f 73 6f 63 6b 74 79 70 | cket(p->ai_family,.p->ai_socktyp |
| 63a0 | 65 2c 20 70 2d 3e 61 69 5f 70 72 6f 74 6f 63 6f 6c 29 29 20 3c 20 30 29 20 0a 20 20 20 20 20 20 | e,.p->ai_protocol)).<.0)........ |
| 63c0 | 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 20 2f 2a 20 53 6f 63 6b 65 74 20 66 61 69 6c 65 64 | ......continue;./*.Socket.failed |
| 63e0 | 2c 20 74 72 79 20 74 68 65 20 6e 65 78 74 20 2a 2f 0a 0a 20 20 20 20 20 20 20 20 2f 2a 20 43 6f | ,.try.the.next.*/........../*.Co |
| 6400 | 6e 6e 65 63 74 20 74 6f 20 74 68 65 20 73 65 72 76 65 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 | nnect.to.the.server.*/.........i |
| 6420 | 66 20 28 63 6f 6e 6e 65 63 74 28 63 6c 69 65 6e 74 66 64 2c 20 70 2d 3e 61 69 5f 61 64 64 72 2c | f.(connect(clientfd,.p->ai_addr, |
| 6440 | 20 70 2d 3e 61 69 5f 61 64 64 72 6c 65 6e 29 20 21 3d 20 2d 31 29 20 0a 20 20 20 20 20 20 20 20 | .p->ai_addrlen).!=.-1).......... |
| 6460 | 20 20 20 20 62 72 65 61 6b 3b 20 2f 2a 20 53 75 63 63 65 73 73 20 2a 2f 0a 20 20 20 20 20 20 20 | ....break;./*.Success.*/........ |
| 6480 | 20 69 66 20 28 63 6c 6f 73 65 28 63 6c 69 65 6e 74 66 64 29 20 3c 20 30 29 20 7b 20 2f 2a 20 43 | .if.(close(clientfd).<.0).{./*.C |
| 64a0 | 6f 6e 6e 65 63 74 20 66 61 69 6c 65 64 2c 20 74 72 79 20 61 6e 6f 74 68 65 72 20 2a 2f 20 20 2f | onnect.failed,.try.another.*/../ |
| 64c0 | 2f 6c 69 6e 65 3a 6e 65 74 70 3a 6f 70 65 6e 63 6c 69 65 6e 74 66 64 3a 63 6c 6f 73 65 66 64 0a | /line:netp:openclientfd:closefd. |
| 64e0 | 20 20 20 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 6f 70 65 | ............fprintf(stderr,."ope |
| 6500 | 6e 5f 63 6c 69 65 6e 74 66 64 3a 20 63 6c 6f 73 65 20 66 61 69 6c 65 64 3a 20 25 73 5c 6e 22 2c | n_clientfd:.close.failed:.%s\n", |
| 6520 | 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 | .strerror(errno));.............r |
| 6540 | 65 74 75 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 20 20 7d 20 0a 20 20 20 20 7d 20 0a 0a 20 20 20 | eturn.-1;.........}......}...... |
| 6560 | 20 2f 2a 20 43 6c 65 61 6e 20 75 70 20 2a 2f 0a 20 20 20 20 66 72 65 65 61 64 64 72 69 6e 66 6f | ./*.Clean.up.*/.....freeaddrinfo |
| 6580 | 28 6c 69 73 74 70 29 3b 0a 20 20 20 20 69 66 20 28 21 70 29 20 2f 2a 20 41 6c 6c 20 63 6f 6e 6e | (listp);.....if.(!p)./*.All.conn |
| 65a0 | 65 63 74 73 20 66 61 69 6c 65 64 20 2a 2f 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 | ects.failed.*/.........return.-1 |
| 65c0 | 3b 0a 20 20 20 20 65 6c 73 65 20 20 20 20 2f 2a 20 54 68 65 20 6c 61 73 74 20 63 6f 6e 6e 65 63 | ;.....else..../*.The.last.connec |
| 65e0 | 74 20 73 75 63 63 65 65 64 65 64 20 2a 2f 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6c | t.succeeded.*/.........return.cl |
| 6600 | 69 65 6e 74 66 64 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 20 | ientfd;.}./*.$end.open_clientfd. |
| 6620 | 2a 2f 0a 0a 2f 2a 20 20 0a 20 2a 20 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 2d 20 4f 70 65 6e | */../*....*.open_listenfd.-.Open |
| 6640 | 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 65 6e 69 6e 67 20 73 6f 63 6b 65 74 20 6f | .and.return.a.listening.socket.o |
| 6660 | 6e 20 70 6f 72 74 2e 20 54 68 69 73 0a 20 2a 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 | n.port..This..*.....function.is. |
| 6680 | 72 65 65 6e 74 72 61 6e 74 20 61 6e 64 20 70 72 6f 74 6f 63 6f 6c 2d 69 6e 64 65 70 65 6e 64 65 | reentrant.and.protocol-independe |
| 66a0 | 6e 74 2e 0a 20 2a 0a 20 2a 20 20 20 20 20 4f 6e 20 65 72 72 6f 72 2c 20 72 65 74 75 72 6e 73 3a | nt...*..*.....On.error,.returns: |
| 66c0 | 20 0a 20 2a 20 20 20 20 20 20 20 2d 32 20 66 6f 72 20 67 65 74 61 64 64 72 69 6e 66 6f 20 65 72 | ...*.......-2.for.getaddrinfo.er |
| 66e0 | 72 6f 72 0a 20 2a 20 20 20 20 20 20 20 2d 31 20 77 69 74 68 20 65 72 72 6e 6f 20 73 65 74 20 66 | ror..*.......-1.with.errno.set.f |
| 6700 | 6f 72 20 6f 74 68 65 72 20 65 72 72 6f 72 73 2e 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 6f | or.other.errors...*/./*.$begin.o |
| 6720 | 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 2a 2f 0a 69 6e 74 20 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 | pen_listenfd.*/.int.open_listenf |
| 6740 | 64 28 63 68 61 72 20 2a 70 6f 72 74 29 20 0a 7b 0a 20 20 20 20 73 74 72 75 63 74 20 61 64 64 72 | d(char.*port)..{.....struct.addr |
| 6760 | 69 6e 66 6f 20 68 69 6e 74 73 2c 20 2a 6c 69 73 74 70 2c 20 2a 70 3b 0a 20 20 20 20 69 6e 74 20 | info.hints,.*listp,.*p;.....int. |
| 6780 | 6c 69 73 74 65 6e 66 64 2c 20 72 63 2c 20 6f 70 74 76 61 6c 3d 31 3b 0a 0a 20 20 20 20 2f 2a 20 | listenfd,.rc,.optval=1;....../*. |
| 67a0 | 47 65 74 20 61 20 6c 69 73 74 20 6f 66 20 70 6f 74 65 6e 74 69 61 6c 20 73 65 72 76 65 72 20 61 | Get.a.list.of.potential.server.a |
| 67c0 | 64 64 72 65 73 73 65 73 20 2a 2f 0a 20 20 20 20 6d 65 6d 73 65 74 28 26 68 69 6e 74 73 2c 20 30 | ddresses.*/.....memset(&hints,.0 |
| 67e0 | 2c 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f 29 29 3b 0a 20 20 20 20 | ,.sizeof(struct.addrinfo));..... |
| 6800 | 68 69 6e 74 73 2e 61 69 5f 73 6f 63 6b 74 79 70 65 20 3d 20 53 4f 43 4b 5f 53 54 52 45 41 4d 3b | hints.ai_socktype.=.SOCK_STREAM; |
| 6820 | 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 41 63 63 65 70 74 20 63 6f 6e 6e 65 63 74 69 6f | ............./*.Accept.connectio |
| 6840 | 6e 73 20 2a 2f 0a 20 20 20 20 68 69 6e 74 73 2e 61 69 5f 66 6c 61 67 73 20 3d 20 41 49 5f 50 41 | ns.*/.....hints.ai_flags.=.AI_PA |
| 6860 | 53 53 49 56 45 20 7c 20 41 49 5f 41 44 44 52 43 4f 4e 46 49 47 3b 20 2f 2a 20 2e 2e 2e 20 6f 6e | SSIVE.|.AI_ADDRCONFIG;./*.....on |
| 6880 | 20 61 6e 79 20 49 50 20 61 64 64 72 65 73 73 20 2a 2f 0a 20 20 20 20 68 69 6e 74 73 2e 61 69 5f | .any.IP.address.*/.....hints.ai_ |
| 68a0 | 66 6c 61 67 73 20 7c 3d 20 41 49 5f 4e 55 4d 45 52 49 43 53 45 52 56 3b 20 20 20 20 20 20 20 20 | flags.|=.AI_NUMERICSERV;........ |
| 68c0 | 20 20 20 20 2f 2a 20 2e 2e 2e 20 75 73 69 6e 67 20 70 6f 72 74 20 6e 75 6d 62 65 72 20 2a 2f 0a | ..../*.....using.port.number.*/. |
| 68e0 | 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 67 65 74 61 64 64 72 69 6e 66 6f 28 4e 55 4c 4c 2c 20 | ....if.((rc.=.getaddrinfo(NULL,. |
| 6900 | 70 6f 72 74 2c 20 26 68 69 6e 74 73 2c 20 26 6c 69 73 74 70 29 29 20 21 3d 20 30 29 20 7b 0a 20 | port,.&hints,.&listp)).!=.0).{.. |
| 6920 | 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 67 65 74 61 64 64 72 69 | .......fprintf(stderr,."getaddri |
| 6940 | 6e 66 6f 20 66 61 69 6c 65 64 20 28 70 6f 72 74 20 25 73 29 3a 20 25 73 5c 6e 22 2c 20 70 6f 72 | nfo.failed.(port.%s):.%s\n",.por |
| 6960 | 74 2c 20 67 61 69 5f 73 74 72 65 72 72 6f 72 28 72 63 29 29 3b 0a 20 20 20 20 20 20 20 20 72 65 | t,.gai_strerror(rc));.........re |
| 6980 | 74 75 72 6e 20 2d 32 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 57 61 6c 6b 20 74 68 65 20 | turn.-2;.....}....../*.Walk.the. |
| 69a0 | 6c 69 73 74 20 66 6f 72 20 6f 6e 65 20 74 68 61 74 20 77 65 20 63 61 6e 20 62 69 6e 64 20 74 6f | list.for.one.that.we.can.bind.to |
| 69c0 | 20 2a 2f 0a 20 20 20 20 66 6f 72 20 28 70 20 3d 20 6c 69 73 74 70 3b 20 70 3b 20 70 20 3d 20 70 | .*/.....for.(p.=.listp;.p;.p.=.p |
| 69e0 | 2d 3e 61 69 5f 6e 65 78 74 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2a 20 43 72 65 61 74 65 20 61 | ->ai_next).{........./*.Create.a |
| 6a00 | 20 73 6f 63 6b 65 74 20 64 65 73 63 72 69 70 74 6f 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 | .socket.descriptor.*/.........if |
| 6a20 | 20 28 28 6c 69 73 74 65 6e 66 64 20 3d 20 73 6f 63 6b 65 74 28 70 2d 3e 61 69 5f 66 61 6d 69 6c | .((listenfd.=.socket(p->ai_famil |
| 6a40 | 79 2c 20 70 2d 3e 61 69 5f 73 6f 63 6b 74 79 70 65 2c 20 70 2d 3e 61 69 5f 70 72 6f 74 6f 63 6f | y,.p->ai_socktype,.p->ai_protoco |
| 6a60 | 6c 29 29 20 3c 20 30 29 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 20 | l)).<.0)..............continue;. |
| 6a80 | 20 2f 2a 20 53 6f 63 6b 65 74 20 66 61 69 6c 65 64 2c 20 74 72 79 20 74 68 65 20 6e 65 78 74 20 | ./*.Socket.failed,.try.the.next. |
| 6aa0 | 2a 2f 0a 0a 20 20 20 20 20 20 20 20 2f 2a 20 45 6c 69 6d 69 6e 61 74 65 73 20 22 41 64 64 72 65 | */........../*.Eliminates."Addre |
| 6ac0 | 73 73 20 61 6c 72 65 61 64 79 20 69 6e 20 75 73 65 22 20 65 72 72 6f 72 20 66 72 6f 6d 20 62 69 | ss.already.in.use".error.from.bi |
| 6ae0 | 6e 64 20 2a 2f 0a 20 20 20 20 20 20 20 20 73 65 74 73 6f 63 6b 6f 70 74 28 6c 69 73 74 65 6e 66 | nd.*/.........setsockopt(listenf |
| 6b00 | 64 2c 20 53 4f 4c 5f 53 4f 43 4b 45 54 2c 20 53 4f 5f 52 45 55 53 45 41 44 44 52 2c 20 20 20 20 | d,.SOL_SOCKET,.SO_REUSEADDR,.... |
| 6b20 | 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 63 73 61 70 70 3a 73 65 74 73 6f 63 6b 6f 70 74 0a 20 20 20 | //line:netp:csapp:setsockopt.... |
| 6b40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a 29 26 6f | ................(const.void.*)&o |
| 6b60 | 70 74 76 61 6c 20 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0a 0a 20 20 20 20 20 20 20 20 2f | ptval.,.sizeof(int));........../ |
| 6b80 | 2a 20 42 69 6e 64 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 20 74 6f 20 74 68 65 20 61 64 64 | *.Bind.the.descriptor.to.the.add |
| 6ba0 | 72 65 73 73 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 20 28 62 69 6e 64 28 6c 69 73 74 65 6e 66 | ress.*/.........if.(bind(listenf |
| 6bc0 | 64 2c 20 70 2d 3e 61 69 5f 61 64 64 72 2c 20 70 2d 3e 61 69 5f 61 64 64 72 6c 65 6e 29 20 3d 3d | d,.p->ai_addr,.p->ai_addrlen).== |
| 6be0 | 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 20 2f 2a 20 53 75 63 63 65 73 | .0).............break;./*.Succes |
| 6c00 | 73 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6c 6f 73 65 28 6c 69 73 74 65 6e 66 64 29 | s.*/.........if.(close(listenfd) |
| 6c20 | 20 3c 20 30 29 20 7b 20 2f 2a 20 42 69 6e 64 20 66 61 69 6c 65 64 2c 20 74 72 79 20 74 68 65 20 | .<.0).{./*.Bind.failed,.try.the. |
| 6c40 | 6e 65 78 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 | next.*/.............fprintf(stde |
| 6c60 | 72 72 2c 20 22 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 63 6c 6f 73 65 20 66 61 69 6c 65 64 3a | rr,."open_listenfd.close.failed: |
| 6c80 | 20 25 73 5c 6e 22 2c 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 0a 20 20 20 20 20 20 | .%s\n",.strerror(errno));....... |
| 6ca0 | 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d | ......return.-1;.........}.....} |
| 6cc0 | 0a 0a 0a 20 20 20 20 2f 2a 20 43 6c 65 61 6e 20 75 70 20 2a 2f 0a 20 20 20 20 66 72 65 65 61 64 | ......./*.Clean.up.*/.....freead |
| 6ce0 | 64 72 69 6e 66 6f 28 6c 69 73 74 70 29 3b 0a 20 20 20 20 69 66 20 28 21 70 29 20 2f 2a 20 4e 6f | drinfo(listp);.....if.(!p)./*.No |
| 6d00 | 20 61 64 64 72 65 73 73 20 77 6f 72 6b 65 64 20 2a 2f 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 | .address.worked.*/.........retur |
| 6d20 | 6e 20 2d 31 3b 0a 0a 20 20 20 20 2f 2a 20 4d 61 6b 65 20 69 74 20 61 20 6c 69 73 74 65 6e 69 6e | n.-1;....../*.Make.it.a.listenin |
| 6d40 | 67 20 73 6f 63 6b 65 74 20 72 65 61 64 79 20 74 6f 20 61 63 63 65 70 74 20 63 6f 6e 6e 65 63 74 | g.socket.ready.to.accept.connect |
| 6d60 | 69 6f 6e 20 72 65 71 75 65 73 74 73 20 2a 2f 0a 20 20 20 20 69 66 20 28 6c 69 73 74 65 6e 28 6c | ion.requests.*/.....if.(listen(l |
| 6d80 | 69 73 74 65 6e 66 64 2c 20 4c 49 53 54 45 4e 51 29 20 3c 20 30 29 20 7b 0a 20 20 20 20 20 20 20 | istenfd,.LISTENQ).<.0).{........ |
| 6da0 | 20 63 6c 6f 73 65 28 6c 69 73 74 65 6e 66 64 29 3b 0a 09 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 | .close(listenfd);..return.-1;... |
| 6dc0 | 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 65 6e 66 64 3b 0a 7d 0a 2f 2a 20 24 65 | ..}.....return.listenfd;.}./*.$e |
| 6de0 | 6e 64 20 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | nd.open_listenfd.*/../********** |
| 6e00 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| 6e20 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 72 65 65 6e 74 | **********..*.Wrappers.for.reent |
| 6e40 | 72 61 6e 74 20 70 72 6f 74 6f 63 6f 6c 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 68 65 6c 70 65 72 | rant.protocol-independent.helper |
| 6e60 | 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | s..***************************** |
| 6e80 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 69 6e 74 20 4f 70 65 | ***********************/.int.Ope |
| 6ea0 | 6e 5f 63 6c 69 65 6e 74 66 64 28 63 68 61 72 20 2a 68 6f 73 74 6e 61 6d 65 2c 20 63 68 61 72 20 | n_clientfd(char.*hostname,.char. |
| 6ec0 | 2a 70 6f 72 74 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 | *port)..{.....int.rc;......if.(( |
| 6ee0 | 72 63 20 3d 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 28 68 6f 73 74 6e 61 6d 65 2c 20 70 6f 72 | rc.=.open_clientfd(hostname,.por |
| 6f00 | 74 29 29 20 3c 20 30 29 20 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 4f 70 65 6e 5f 63 6c 69 65 | t)).<.0)...unix_error("Open_clie |
| 6f20 | 6e 74 66 64 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a | ntfd.error");.....return.rc;.}.. |
| 6f40 | 69 6e 74 20 4f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 28 63 68 61 72 20 2a 70 6f 72 74 29 20 0a 7b | int.Open_listenfd(char.*port)..{ |
| 6f60 | 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 6f 70 65 6e | .....int.rc;......if.((rc.=.open |
| 6f80 | 5f 6c 69 73 74 65 6e 66 64 28 70 6f 72 74 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f | _listenfd(port)).<.0)..unix_erro |
| 6fa0 | 72 28 22 4f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 | r("Open_listenfd.error");.....re |
| 6fc0 | 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 2f 2a 20 24 65 6e 64 20 63 73 61 70 70 2e 63 20 2a 2f 0a 0a | turn.rc;.}../*.$end.csapp.c.*/.. |
| 6fe0 | 0a 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7000 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 63 73 61 70 70 2e 68 00 00 00 00 00 00 00 00 | proxylab-handout/csapp.h........ |
| 7020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7060 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 7080 | 30 30 31 34 37 33 35 00 31 32 34 33 31 32 35 34 37 33 36 00 30 31 33 36 36 33 00 20 30 00 00 00 | 0014735.12431254736.013663..0... |
| 70a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 70c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 70e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7100 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 7120 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 7140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 71a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 71c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 71e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7200 | 2f 2a 0a 20 2a 20 63 73 61 70 70 2e 68 20 2d 20 70 72 6f 74 6f 74 79 70 65 73 20 61 6e 64 20 64 | /*..*.csapp.h.-.prototypes.and.d |
| 7220 | 65 66 69 6e 69 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 43 53 3a 41 50 50 33 65 20 62 6f 6f 6b | efinitions.for.the.CS:APP3e.book |
| 7240 | 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 63 73 61 70 70 2e 68 20 2a 2f 0a 23 69 66 6e 64 65 | ..*/./*.$begin.csapp.h.*/.#ifnde |
| 7260 | 66 20 5f 5f 43 53 41 50 50 5f 48 5f 5f 0a 23 64 65 66 69 6e 65 20 5f 5f 43 53 41 50 50 5f 48 5f | f.__CSAPP_H__.#define.__CSAPP_H_ |
| 7280 | 5f 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c | _..#include.<stdio.h>.#include.< |
| 72a0 | 73 74 64 6c 69 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 61 72 67 2e 68 3e 0a 23 69 | stdlib.h>.#include.<stdarg.h>.#i |
| 72c0 | 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 | nclude.<unistd.h>.#include.<stri |
| 72e0 | 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 63 74 79 70 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 | ng.h>.#include.<ctype.h>.#includ |
| 7300 | 65 20 3c 73 65 74 6a 6d 70 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e | e.<setjmp.h>.#include.<signal.h> |
| 7320 | 0a 23 69 6e 63 6c 75 64 65 20 3c 64 69 72 65 6e 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 | .#include.<dirent.h>.#include.<s |
| 7340 | 79 73 2f 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 74 79 70 65 73 2e 68 | ys/time.h>.#include.<sys/types.h |
| 7360 | 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 61 69 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 | >.#include.<sys/wait.h>.#include |
| 7380 | 20 3c 73 79 73 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 66 63 6e 74 6c 2e 68 3e | .<sys/stat.h>.#include.<fcntl.h> |
| 73a0 | 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 | .#include.<sys/mman.h>.#include. |
| 73c0 | 3c 65 72 72 6e 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6d 61 74 68 2e 68 3e 0a 23 69 6e 63 | <errno.h>.#include.<math.h>.#inc |
| 73e0 | 6c 75 64 65 20 3c 70 74 68 72 65 61 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 65 6d 61 70 | lude.<pthread.h>.#include.<semap |
| 7400 | 68 6f 72 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 73 6f 63 6b 65 74 2e 68 3e 0a | hore.h>.#include.<sys/socket.h>. |
| 7420 | 23 69 6e 63 6c 75 64 65 20 3c 6e 65 74 64 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6e 65 74 | #include.<netdb.h>.#include.<net |
| 7440 | 69 6e 65 74 2f 69 6e 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 72 70 61 2f 69 6e 65 74 2e 68 | inet/in.h>.#include.<arpa/inet.h |
| 7460 | 3e 0a 0a 2f 2a 20 44 65 66 61 75 6c 74 20 66 69 6c 65 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 61 | >../*.Default.file.permissions.a |
| 7480 | 72 65 20 44 45 46 5f 4d 4f 44 45 20 26 20 7e 44 45 46 5f 55 4d 41 53 4b 20 2a 2f 0a 2f 2a 20 24 | re.DEF_MODE.&.~DEF_UMASK.*/./*.$ |
| 74a0 | 62 65 67 69 6e 20 63 72 65 61 74 65 6d 61 73 6b 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20 44 45 46 | begin.createmasks.*/.#define.DEF |
| 74c0 | 5f 4d 4f 44 45 20 20 20 53 5f 49 52 55 53 52 7c 53 5f 49 57 55 53 52 7c 53 5f 49 52 47 52 50 7c | _MODE...S_IRUSR|S_IWUSR|S_IRGRP| |
| 74e0 | 53 5f 49 57 47 52 50 7c 53 5f 49 52 4f 54 48 7c 53 5f 49 57 4f 54 48 0a 23 64 65 66 69 6e 65 20 | S_IWGRP|S_IROTH|S_IWOTH.#define. |
| 7500 | 44 45 46 5f 55 4d 41 53 4b 20 20 53 5f 49 57 47 52 50 7c 53 5f 49 57 4f 54 48 0a 2f 2a 20 24 65 | DEF_UMASK..S_IWGRP|S_IWOTH./*.$e |
| 7520 | 6e 64 20 63 72 65 61 74 65 6d 61 73 6b 73 20 2a 2f 0a 0a 2f 2a 20 53 69 6d 70 6c 69 66 69 65 73 | nd.createmasks.*/../*.Simplifies |
| 7540 | 20 63 61 6c 6c 73 20 74 6f 20 62 69 6e 64 28 29 2c 20 63 6f 6e 6e 65 63 74 28 29 2c 20 61 6e 64 | .calls.to.bind(),.connect(),.and |
| 7560 | 20 61 63 63 65 70 74 28 29 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 73 6f 63 6b 61 64 64 72 64 | .accept().*/./*.$begin.sockaddrd |
| 7580 | 65 66 20 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 53 41 | ef.*/.typedef.struct.sockaddr.SA |
| 75a0 | 3b 0a 2f 2a 20 24 65 6e 64 20 73 6f 63 6b 61 64 64 72 64 65 66 20 2a 2f 0a 0a 2f 2a 20 50 65 72 | ;./*.$end.sockaddrdef.*/../*.Per |
| 75c0 | 73 69 73 74 65 6e 74 20 73 74 61 74 65 20 66 6f 72 20 74 68 65 20 72 6f 62 75 73 74 20 49 2f 4f | sistent.state.for.the.robust.I/O |
| 75e0 | 20 28 52 69 6f 29 20 70 61 63 6b 61 67 65 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 72 69 6f 5f | .(Rio).package.*/./*.$begin.rio_ |
| 7600 | 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 52 49 4f 5f 42 55 46 53 49 5a 45 20 38 31 39 32 0a 74 79 | t.*/.#define.RIO_BUFSIZE.8192.ty |
| 7620 | 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 69 6e 74 20 72 69 6f 5f 66 64 3b 20 20 | pedef.struct.{.....int.rio_fd;.. |
| 7640 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 65 73 63 72 69 70 74 6f 72 20 66 6f 72 20 | ............../*.Descriptor.for. |
| 7660 | 74 68 69 73 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 20 2a 2f 0a 20 20 20 20 69 6e 74 20 72 69 6f | this.internal.buf.*/.....int.rio |
| 7680 | 5f 63 6e 74 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 55 6e 72 65 61 64 20 62 79 | _cnt;.............../*.Unread.by |
| 76a0 | 74 65 73 20 69 6e 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 | tes.in.internal.buf.*/.....char. |
| 76c0 | 2a 72 69 6f 5f 62 75 66 70 74 72 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 65 78 74 20 75 6e | *rio_bufptr;........../*.Next.un |
| 76e0 | 72 65 61 64 20 62 79 74 65 20 69 6e 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 20 2a 2f 0a 20 20 20 | read.byte.in.internal.buf.*/.... |
| 7700 | 20 63 68 61 72 20 72 69 6f 5f 62 75 66 5b 52 49 4f 5f 42 55 46 53 49 5a 45 5d 3b 20 2f 2a 20 49 | .char.rio_buf[RIO_BUFSIZE];./*.I |
| 7720 | 6e 74 65 72 6e 61 6c 20 62 75 66 66 65 72 20 2a 2f 0a 7d 20 72 69 6f 5f 74 3b 0a 2f 2a 20 24 65 | nternal.buffer.*/.}.rio_t;./*.$e |
| 7740 | 6e 64 20 72 69 6f 5f 74 20 2a 2f 0a 0a 2f 2a 20 45 78 74 65 72 6e 61 6c 20 76 61 72 69 61 62 6c | nd.rio_t.*/../*.External.variabl |
| 7760 | 65 73 20 2a 2f 0a 65 78 74 65 72 6e 20 69 6e 74 20 68 5f 65 72 72 6e 6f 3b 20 20 20 20 2f 2a 20 | es.*/.extern.int.h_errno;..../*. |
| 7780 | 44 65 66 69 6e 65 64 20 62 79 20 42 49 4e 44 20 66 6f 72 20 44 4e 53 20 65 72 72 6f 72 73 20 2a | Defined.by.BIND.for.DNS.errors.* |
| 77a0 | 2f 20 0a 65 78 74 65 72 6e 20 63 68 61 72 20 2a 2a 65 6e 76 69 72 6f 6e 3b 20 2f 2a 20 44 65 66 | /..extern.char.**environ;./*.Def |
| 77c0 | 69 6e 65 64 20 62 79 20 6c 69 62 63 20 2a 2f 0a 0a 2f 2a 20 4d 69 73 63 20 63 6f 6e 73 74 61 6e | ined.by.libc.*/../*.Misc.constan |
| 77e0 | 74 73 20 2a 2f 0a 23 64 65 66 69 6e 65 09 4d 41 58 4c 49 4e 45 09 20 38 31 39 32 20 20 2f 2a 20 | ts.*/.#define.MAXLINE..8192../*. |
| 7800 | 4d 61 78 20 74 65 78 74 20 6c 69 6e 65 20 6c 65 6e 67 74 68 20 2a 2f 0a 23 64 65 66 69 6e 65 20 | Max.text.line.length.*/.#define. |
| 7820 | 4d 41 58 42 55 46 20 20 20 38 31 39 32 20 20 2f 2a 20 4d 61 78 20 49 2f 4f 20 62 75 66 66 65 72 | MAXBUF...8192../*.Max.I/O.buffer |
| 7840 | 20 73 69 7a 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4c 49 53 54 45 4e 51 20 20 31 30 32 34 20 20 | .size.*/.#define.LISTENQ..1024.. |
| 7860 | 2f 2a 20 53 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 6c 69 73 74 65 6e 28 29 20 2a | /*.Second.argument.to.listen().* |
| 7880 | 2f 0a 0a 2f 2a 20 4f 75 72 20 6f 77 6e 20 65 72 72 6f 72 2d 68 61 6e 64 6c 69 6e 67 20 66 75 6e | /../*.Our.own.error-handling.fun |
| 78a0 | 63 74 69 6f 6e 73 20 2a 2f 0a 76 6f 69 64 20 75 6e 69 78 5f 65 72 72 6f 72 28 63 68 61 72 20 2a | ctions.*/.void.unix_error(char.* |
| 78c0 | 6d 73 67 29 3b 0a 76 6f 69 64 20 70 6f 73 69 78 5f 65 72 72 6f 72 28 69 6e 74 20 63 6f 64 65 2c | msg);.void.posix_error(int.code, |
| 78e0 | 20 63 68 61 72 20 2a 6d 73 67 29 3b 0a 76 6f 69 64 20 64 6e 73 5f 65 72 72 6f 72 28 63 68 61 72 | .char.*msg);.void.dns_error(char |
| 7900 | 20 2a 6d 73 67 29 3b 0a 76 6f 69 64 20 67 61 69 5f 65 72 72 6f 72 28 69 6e 74 20 63 6f 64 65 2c | .*msg);.void.gai_error(int.code, |
| 7920 | 20 63 68 61 72 20 2a 6d 73 67 29 3b 0a 76 6f 69 64 20 61 70 70 5f 65 72 72 6f 72 28 63 68 61 72 | .char.*msg);.void.app_error(char |
| 7940 | 20 2a 6d 73 67 29 3b 0a 0a 2f 2a 20 50 72 6f 63 65 73 73 20 63 6f 6e 74 72 6f 6c 20 77 72 61 70 | .*msg);../*.Process.control.wrap |
| 7960 | 70 65 72 73 20 2a 2f 0a 70 69 64 5f 74 20 46 6f 72 6b 28 76 6f 69 64 29 3b 0a 76 6f 69 64 20 45 | pers.*/.pid_t.Fork(void);.void.E |
| 7980 | 78 65 63 76 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 68 61 72 | xecve(const.char.*filename,.char |
| 79a0 | 20 2a 63 6f 6e 73 74 20 61 72 67 76 5b 5d 2c 20 63 68 61 72 20 2a 63 6f 6e 73 74 20 65 6e 76 70 | .*const.argv[],.char.*const.envp |
| 79c0 | 5b 5d 29 3b 0a 70 69 64 5f 74 20 57 61 69 74 28 69 6e 74 20 2a 73 74 61 74 75 73 29 3b 0a 70 69 | []);.pid_t.Wait(int.*status);.pi |
| 79e0 | 64 5f 74 20 57 61 69 74 70 69 64 28 70 69 64 5f 74 20 70 69 64 2c 20 69 6e 74 20 2a 69 70 74 72 | d_t.Waitpid(pid_t.pid,.int.*iptr |
| 7a00 | 2c 20 69 6e 74 20 6f 70 74 69 6f 6e 73 29 3b 0a 76 6f 69 64 20 4b 69 6c 6c 28 70 69 64 5f 74 20 | ,.int.options);.void.Kill(pid_t. |
| 7a20 | 70 69 64 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 3b 0a 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 53 | pid,.int.signum);.unsigned.int.S |
| 7a40 | 6c 65 65 70 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 73 65 63 73 29 3b 0a 76 6f 69 64 20 50 61 | leep(unsigned.int.secs);.void.Pa |
| 7a60 | 75 73 65 28 76 6f 69 64 29 3b 0a 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 41 6c 61 72 6d 28 75 6e | use(void);.unsigned.int.Alarm(un |
| 7a80 | 73 69 67 6e 65 64 20 69 6e 74 20 73 65 63 6f 6e 64 73 29 3b 0a 76 6f 69 64 20 53 65 74 70 67 69 | signed.int.seconds);.void.Setpgi |
| 7aa0 | 64 28 70 69 64 5f 74 20 70 69 64 2c 20 70 69 64 5f 74 20 70 67 69 64 29 3b 0a 70 69 64 5f 74 20 | d(pid_t.pid,.pid_t.pgid);.pid_t. |
| 7ac0 | 47 65 74 70 67 72 70 28 29 3b 0a 0a 2f 2a 20 53 69 67 6e 61 6c 20 77 72 61 70 70 65 72 73 20 2a | Getpgrp();../*.Signal.wrappers.* |
| 7ae0 | 2f 0a 74 79 70 65 64 65 66 20 76 6f 69 64 20 68 61 6e 64 6c 65 72 5f 74 28 69 6e 74 29 3b 0a 68 | /.typedef.void.handler_t(int);.h |
| 7b00 | 61 6e 64 6c 65 72 5f 74 20 2a 53 69 67 6e 61 6c 28 69 6e 74 20 73 69 67 6e 75 6d 2c 20 68 61 6e | andler_t.*Signal(int.signum,.han |
| 7b20 | 64 6c 65 72 5f 74 20 2a 68 61 6e 64 6c 65 72 29 3b 0a 76 6f 69 64 20 53 69 67 70 72 6f 63 6d 61 | dler_t.*handler);.void.Sigprocma |
| 7b40 | 73 6b 28 69 6e 74 20 68 6f 77 2c 20 63 6f 6e 73 74 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c | sk(int.how,.const.sigset_t.*set, |
| 7b60 | 20 73 69 67 73 65 74 5f 74 20 2a 6f 6c 64 73 65 74 29 3b 0a 76 6f 69 64 20 53 69 67 65 6d 70 74 | .sigset_t.*oldset);.void.Sigempt |
| 7b80 | 79 73 65 74 28 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 3b 0a 76 6f 69 64 20 53 69 67 66 69 6c | yset(sigset_t.*set);.void.Sigfil |
| 7ba0 | 6c 73 65 74 28 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 3b 0a 76 6f 69 64 20 53 69 67 61 64 64 | lset(sigset_t.*set);.void.Sigadd |
| 7bc0 | 73 65 74 28 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 3b 0a | set(sigset_t.*set,.int.signum);. |
| 7be0 | 76 6f 69 64 20 53 69 67 64 65 6c 73 65 74 28 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e | void.Sigdelset(sigset_t.*set,.in |
| 7c00 | 74 20 73 69 67 6e 75 6d 29 3b 0a 69 6e 74 20 53 69 67 69 73 6d 65 6d 62 65 72 28 63 6f 6e 73 74 | t.signum);.int.Sigismember(const |
| 7c20 | 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 3b 0a 69 6e 74 | .sigset_t.*set,.int.signum);.int |
| 7c40 | 20 53 69 67 73 75 73 70 65 6e 64 28 63 6f 6e 73 74 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 | .Sigsuspend(const.sigset_t.*set) |
| 7c60 | 3b 0a 0a 2f 2a 20 53 69 6f 20 28 53 69 67 6e 61 6c 2d 73 61 66 65 20 49 2f 4f 29 20 72 6f 75 74 | ;../*.Sio.(Signal-safe.I/O).rout |
| 7c80 | 69 6e 65 73 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 73 69 6f 5f 70 75 74 73 28 63 68 61 72 20 73 5b | ines.*/.ssize_t.sio_puts(char.s[ |
| 7ca0 | 5d 29 3b 0a 73 73 69 7a 65 5f 74 20 73 69 6f 5f 70 75 74 6c 28 6c 6f 6e 67 20 76 29 3b 0a 76 6f | ]);.ssize_t.sio_putl(long.v);.vo |
| 7cc0 | 69 64 20 73 69 6f 5f 65 72 72 6f 72 28 63 68 61 72 20 73 5b 5d 29 3b 0a 0a 2f 2a 20 53 69 6f 20 | id.sio_error(char.s[]);../*.Sio. |
| 7ce0 | 77 72 61 70 70 65 72 73 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 53 69 6f 5f 70 75 74 73 28 63 68 61 | wrappers.*/.ssize_t.Sio_puts(cha |
| 7d00 | 72 20 73 5b 5d 29 3b 0a 73 73 69 7a 65 5f 74 20 53 69 6f 5f 70 75 74 6c 28 6c 6f 6e 67 20 76 29 | r.s[]);.ssize_t.Sio_putl(long.v) |
| 7d20 | 3b 0a 76 6f 69 64 20 53 69 6f 5f 65 72 72 6f 72 28 63 68 61 72 20 73 5b 5d 29 3b 0a 0a 2f 2a 20 | ;.void.Sio_error(char.s[]);../*. |
| 7d40 | 55 6e 69 78 20 49 2f 4f 20 77 72 61 70 70 65 72 73 20 2a 2f 0a 69 6e 74 20 4f 70 65 6e 28 63 6f | Unix.I/O.wrappers.*/.int.Open(co |
| 7d60 | 6e 73 74 20 63 68 61 72 20 2a 70 61 74 68 6e 61 6d 65 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 6d | nst.char.*pathname,.int.flags,.m |
| 7d80 | 6f 64 65 5f 74 20 6d 6f 64 65 29 3b 0a 73 73 69 7a 65 5f 74 20 52 65 61 64 28 69 6e 74 20 66 64 | ode_t.mode);.ssize_t.Read(int.fd |
| 7da0 | 2c 20 76 6f 69 64 20 2a 62 75 66 2c 20 73 69 7a 65 5f 74 20 63 6f 75 6e 74 29 3b 0a 73 73 69 7a | ,.void.*buf,.size_t.count);.ssiz |
| 7dc0 | 65 5f 74 20 57 72 69 74 65 28 69 6e 74 20 66 64 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 62 75 | e_t.Write(int.fd,.const.void.*bu |
| 7de0 | 66 2c 20 73 69 7a 65 5f 74 20 63 6f 75 6e 74 29 3b 0a 6f 66 66 5f 74 20 4c 73 65 65 6b 28 69 6e | f,.size_t.count);.off_t.Lseek(in |
| 7e00 | 74 20 66 69 6c 64 65 73 2c 20 6f 66 66 5f 74 20 6f 66 66 73 65 74 2c 20 69 6e 74 20 77 68 65 6e | t.fildes,.off_t.offset,.int.when |
| 7e20 | 63 65 29 3b 0a 76 6f 69 64 20 43 6c 6f 73 65 28 69 6e 74 20 66 64 29 3b 0a 69 6e 74 20 53 65 6c | ce);.void.Close(int.fd);.int.Sel |
| 7e40 | 65 63 74 28 69 6e 74 20 20 6e 2c 20 66 64 5f 73 65 74 20 2a 72 65 61 64 66 64 73 2c 20 66 64 5f | ect(int..n,.fd_set.*readfds,.fd_ |
| 7e60 | 73 65 74 20 2a 77 72 69 74 65 66 64 73 2c 20 66 64 5f 73 65 74 20 2a 65 78 63 65 70 74 66 64 73 | set.*writefds,.fd_set.*exceptfds |
| 7e80 | 2c 20 0a 09 20 20 20 73 74 72 75 63 74 20 74 69 6d 65 76 61 6c 20 2a 74 69 6d 65 6f 75 74 29 3b | ,......struct.timeval.*timeout); |
| 7ea0 | 0a 69 6e 74 20 44 75 70 32 28 69 6e 74 20 66 64 31 2c 20 69 6e 74 20 66 64 32 29 3b 0a 76 6f 69 | .int.Dup2(int.fd1,.int.fd2);.voi |
| 7ec0 | 64 20 53 74 61 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 73 74 72 | d.Stat(const.char.*filename,.str |
| 7ee0 | 75 63 74 20 73 74 61 74 20 2a 62 75 66 29 3b 0a 76 6f 69 64 20 46 73 74 61 74 28 69 6e 74 20 66 | uct.stat.*buf);.void.Fstat(int.f |
| 7f00 | 64 2c 20 73 74 72 75 63 74 20 73 74 61 74 20 2a 62 75 66 29 20 3b 0a 0a 2f 2a 20 44 69 72 65 63 | d,.struct.stat.*buf).;../*.Direc |
| 7f20 | 74 6f 72 79 20 77 72 61 70 70 65 72 73 20 2a 2f 0a 44 49 52 20 2a 4f 70 65 6e 64 69 72 28 63 6f | tory.wrappers.*/.DIR.*Opendir(co |
| 7f40 | 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 29 3b 0a 73 74 72 75 63 74 20 64 69 72 65 6e 74 20 2a | nst.char.*name);.struct.dirent.* |
| 7f60 | 52 65 61 64 64 69 72 28 44 49 52 20 2a 64 69 72 70 29 3b 0a 69 6e 74 20 43 6c 6f 73 65 64 69 72 | Readdir(DIR.*dirp);.int.Closedir |
| 7f80 | 28 44 49 52 20 2a 64 69 72 70 29 3b 0a 0a 2f 2a 20 4d 65 6d 6f 72 79 20 6d 61 70 70 69 6e 67 20 | (DIR.*dirp);../*.Memory.mapping. |
| 7fa0 | 77 72 61 70 70 65 72 73 20 2a 2f 0a 76 6f 69 64 20 2a 4d 6d 61 70 28 76 6f 69 64 20 2a 61 64 64 | wrappers.*/.void.*Mmap(void.*add |
| 7fc0 | 72 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 2c 20 69 6e 74 20 70 72 6f 74 2c 20 69 6e 74 20 66 6c 61 | r,.size_t.len,.int.prot,.int.fla |
| 7fe0 | 67 73 2c 20 69 6e 74 20 66 64 2c 20 6f 66 66 5f 74 20 6f 66 66 73 65 74 29 3b 0a 76 6f 69 64 20 | gs,.int.fd,.off_t.offset);.void. |
| 8000 | 4d 75 6e 6d 61 70 28 76 6f 69 64 20 2a 73 74 61 72 74 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 67 74 | Munmap(void.*start,.size_t.lengt |
| 8020 | 68 29 3b 0a 0a 2f 2a 20 53 74 61 6e 64 61 72 64 20 49 2f 4f 20 77 72 61 70 70 65 72 73 20 2a 2f | h);../*.Standard.I/O.wrappers.*/ |
| 8040 | 0a 76 6f 69 64 20 46 63 6c 6f 73 65 28 46 49 4c 45 20 2a 66 70 29 3b 0a 46 49 4c 45 20 2a 46 64 | .void.Fclose(FILE.*fp);.FILE.*Fd |
| 8060 | 6f 70 65 6e 28 69 6e 74 20 66 64 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 74 79 70 65 29 3b 0a | open(int.fd,.const.char.*type);. |
| 8080 | 63 68 61 72 20 2a 46 67 65 74 73 28 63 68 61 72 20 2a 70 74 72 2c 20 69 6e 74 20 6e 2c 20 46 49 | char.*Fgets(char.*ptr,.int.n,.FI |
| 80a0 | 4c 45 20 2a 73 74 72 65 61 6d 29 3b 0a 46 49 4c 45 20 2a 46 6f 70 65 6e 28 63 6f 6e 73 74 20 63 | LE.*stream);.FILE.*Fopen(const.c |
| 80c0 | 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6d 6f 64 65 29 | har.*filename,.const.char.*mode) |
| 80e0 | 3b 0a 76 6f 69 64 20 46 70 75 74 73 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 74 72 2c 20 46 49 | ;.void.Fputs(const.char.*ptr,.FI |
| 8100 | 4c 45 20 2a 73 74 72 65 61 6d 29 3b 0a 73 69 7a 65 5f 74 20 46 72 65 61 64 28 76 6f 69 64 20 2a | LE.*stream);.size_t.Fread(void.* |
| 8120 | 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c 20 73 69 7a 65 5f 74 20 6e 6d 65 6d 62 2c 20 | ptr,.size_t.size,.size_t.nmemb,. |
| 8140 | 46 49 4c 45 20 2a 73 74 72 65 61 6d 29 3b 0a 76 6f 69 64 20 46 77 72 69 74 65 28 63 6f 6e 73 74 | FILE.*stream);.void.Fwrite(const |
| 8160 | 20 76 6f 69 64 20 2a 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c 20 73 69 7a 65 5f 74 20 | .void.*ptr,.size_t.size,.size_t. |
| 8180 | 6e 6d 65 6d 62 2c 20 46 49 4c 45 20 2a 73 74 72 65 61 6d 29 3b 0a 0a 2f 2a 20 44 79 6e 61 6d 69 | nmemb,.FILE.*stream);../*.Dynami |
| 81a0 | 63 20 73 74 6f 72 61 67 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 77 72 61 70 70 65 72 73 20 2a 2f | c.storage.allocation.wrappers.*/ |
| 81c0 | 0a 76 6f 69 64 20 2a 4d 61 6c 6c 6f 63 28 73 69 7a 65 5f 74 20 73 69 7a 65 29 3b 0a 76 6f 69 64 | .void.*Malloc(size_t.size);.void |
| 81e0 | 20 2a 52 65 61 6c 6c 6f 63 28 76 6f 69 64 20 2a 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 | .*Realloc(void.*ptr,.size_t.size |
| 8200 | 29 3b 0a 76 6f 69 64 20 2a 43 61 6c 6c 6f 63 28 73 69 7a 65 5f 74 20 6e 6d 65 6d 62 2c 20 73 69 | );.void.*Calloc(size_t.nmemb,.si |
| 8220 | 7a 65 5f 74 20 73 69 7a 65 29 3b 0a 76 6f 69 64 20 46 72 65 65 28 76 6f 69 64 20 2a 70 74 72 29 | ze_t.size);.void.Free(void.*ptr) |
| 8240 | 3b 0a 0a 2f 2a 20 53 6f 63 6b 65 74 73 20 69 6e 74 65 72 66 61 63 65 20 77 72 61 70 70 65 72 73 | ;../*.Sockets.interface.wrappers |
| 8260 | 20 2a 2f 0a 69 6e 74 20 53 6f 63 6b 65 74 28 69 6e 74 20 64 6f 6d 61 69 6e 2c 20 69 6e 74 20 74 | .*/.int.Socket(int.domain,.int.t |
| 8280 | 79 70 65 2c 20 69 6e 74 20 70 72 6f 74 6f 63 6f 6c 29 3b 0a 76 6f 69 64 20 53 65 74 73 6f 63 6b | ype,.int.protocol);.void.Setsock |
| 82a0 | 6f 70 74 28 69 6e 74 20 73 2c 20 69 6e 74 20 6c 65 76 65 6c 2c 20 69 6e 74 20 6f 70 74 6e 61 6d | opt(int.s,.int.level,.int.optnam |
| 82c0 | 65 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 6f 70 74 76 61 6c 2c 20 69 6e 74 20 6f 70 74 6c 65 | e,.const.void.*optval,.int.optle |
| 82e0 | 6e 29 3b 0a 76 6f 69 64 20 42 69 6e 64 28 69 6e 74 20 73 6f 63 6b 66 64 2c 20 73 74 72 75 63 74 | n);.void.Bind(int.sockfd,.struct |
| 8300 | 20 73 6f 63 6b 61 64 64 72 20 2a 6d 79 5f 61 64 64 72 2c 20 69 6e 74 20 61 64 64 72 6c 65 6e 29 | .sockaddr.*my_addr,.int.addrlen) |
| 8320 | 3b 0a 76 6f 69 64 20 4c 69 73 74 65 6e 28 69 6e 74 20 73 2c 20 69 6e 74 20 62 61 63 6b 6c 6f 67 | ;.void.Listen(int.s,.int.backlog |
| 8340 | 29 3b 0a 69 6e 74 20 41 63 63 65 70 74 28 69 6e 74 20 73 2c 20 73 74 72 75 63 74 20 73 6f 63 6b | );.int.Accept(int.s,.struct.sock |
| 8360 | 61 64 64 72 20 2a 61 64 64 72 2c 20 73 6f 63 6b 6c 65 6e 5f 74 20 2a 61 64 64 72 6c 65 6e 29 3b | addr.*addr,.socklen_t.*addrlen); |
| 8380 | 0a 76 6f 69 64 20 43 6f 6e 6e 65 63 74 28 69 6e 74 20 73 6f 63 6b 66 64 2c 20 73 74 72 75 63 74 | .void.Connect(int.sockfd,.struct |
| 83a0 | 20 73 6f 63 6b 61 64 64 72 20 2a 73 65 72 76 5f 61 64 64 72 2c 20 69 6e 74 20 61 64 64 72 6c 65 | .sockaddr.*serv_addr,.int.addrle |
| 83c0 | 6e 29 3b 0a 0a 2f 2a 20 50 72 6f 74 6f 63 6f 6c 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 77 72 61 | n);../*.Protocol.independent.wra |
| 83e0 | 70 70 65 72 73 20 2a 2f 0a 76 6f 69 64 20 47 65 74 61 64 64 72 69 6e 66 6f 28 63 6f 6e 73 74 20 | ppers.*/.void.Getaddrinfo(const. |
| 8400 | 63 68 61 72 20 2a 6e 6f 64 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 65 72 76 69 63 65 2c | char.*node,.const.char.*service, |
| 8420 | 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 | ...................const.struct. |
| 8440 | 61 64 64 72 69 6e 66 6f 20 2a 68 69 6e 74 73 2c 20 73 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f | addrinfo.*hints,.struct.addrinfo |
| 8460 | 20 2a 2a 72 65 73 29 3b 0a 76 6f 69 64 20 47 65 74 6e 61 6d 65 69 6e 66 6f 28 63 6f 6e 73 74 20 | .**res);.void.Getnameinfo(const. |
| 8480 | 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 2a 73 61 2c 20 73 6f 63 6b 6c 65 6e 5f 74 20 73 | struct.sockaddr.*sa,.socklen_t.s |
| 84a0 | 61 6c 65 6e 2c 20 63 68 61 72 20 2a 68 6f 73 74 2c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | alen,.char.*host,............... |
| 84c0 | 20 20 20 20 73 69 7a 65 5f 74 20 68 6f 73 74 6c 65 6e 2c 20 63 68 61 72 20 2a 73 65 72 76 2c 20 | ....size_t.hostlen,.char.*serv,. |
| 84e0 | 73 69 7a 65 5f 74 20 73 65 72 76 6c 65 6e 2c 20 69 6e 74 20 66 6c 61 67 73 29 3b 0a 76 6f 69 64 | size_t.servlen,.int.flags);.void |
| 8500 | 20 46 72 65 65 61 64 64 72 69 6e 66 6f 28 73 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f 20 2a 72 | .Freeaddrinfo(struct.addrinfo.*r |
| 8520 | 65 73 29 3b 0a 76 6f 69 64 20 49 6e 65 74 5f 6e 74 6f 70 28 69 6e 74 20 61 66 2c 20 63 6f 6e 73 | es);.void.Inet_ntop(int.af,.cons |
| 8540 | 74 20 76 6f 69 64 20 2a 73 72 63 2c 20 63 68 61 72 20 2a 64 73 74 2c 20 73 6f 63 6b 6c 65 6e 5f | t.void.*src,.char.*dst,.socklen_ |
| 8560 | 74 20 73 69 7a 65 29 3b 0a 76 6f 69 64 20 49 6e 65 74 5f 70 74 6f 6e 28 69 6e 74 20 61 66 2c 20 | t.size);.void.Inet_pton(int.af,. |
| 8580 | 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 72 63 2c 20 76 6f 69 64 20 2a 64 73 74 29 3b 20 0a 0a 2f | const.char.*src,.void.*dst);.../ |
| 85a0 | 2a 20 44 4e 53 20 77 72 61 70 70 65 72 73 20 2a 2f 0a 73 74 72 75 63 74 20 68 6f 73 74 65 6e 74 | *.DNS.wrappers.*/.struct.hostent |
| 85c0 | 20 2a 47 65 74 68 6f 73 74 62 79 6e 61 6d 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 | .*Gethostbyname(const.char.*name |
| 85e0 | 29 3b 0a 73 74 72 75 63 74 20 68 6f 73 74 65 6e 74 20 2a 47 65 74 68 6f 73 74 62 79 61 64 64 72 | );.struct.hostent.*Gethostbyaddr |
| 8600 | 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 61 64 64 72 2c 20 69 6e 74 20 6c 65 6e 2c 20 69 6e 74 20 | (const.char.*addr,.int.len,.int. |
| 8620 | 74 79 70 65 29 3b 0a 0a 2f 2a 20 50 74 68 72 65 61 64 73 20 74 68 72 65 61 64 20 63 6f 6e 74 72 | type);../*.Pthreads.thread.contr |
| 8640 | 6f 6c 20 77 72 61 70 70 65 72 73 20 2a 2f 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 63 72 65 61 | ol.wrappers.*/.void.Pthread_crea |
| 8660 | 74 65 28 70 74 68 72 65 61 64 5f 74 20 2a 74 69 64 70 2c 20 70 74 68 72 65 61 64 5f 61 74 74 72 | te(pthread_t.*tidp,.pthread_attr |
| 8680 | 5f 74 20 2a 61 74 74 72 70 2c 20 0a 09 09 20 20 20 20 76 6f 69 64 20 2a 20 28 2a 72 6f 75 74 69 | _t.*attrp,........void.*.(*routi |
| 86a0 | 6e 65 29 28 76 6f 69 64 20 2a 29 2c 20 76 6f 69 64 20 2a 61 72 67 70 29 3b 0a 76 6f 69 64 20 50 | ne)(void.*),.void.*argp);.void.P |
| 86c0 | 74 68 72 65 61 64 5f 6a 6f 69 6e 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 2c 20 76 6f 69 64 20 | thread_join(pthread_t.tid,.void. |
| 86e0 | 2a 2a 74 68 72 65 61 64 5f 72 65 74 75 72 6e 29 3b 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 63 | **thread_return);.void.Pthread_c |
| 8700 | 61 6e 63 65 6c 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 29 3b 0a 76 6f 69 64 20 50 74 68 72 65 | ancel(pthread_t.tid);.void.Pthre |
| 8720 | 61 64 5f 64 65 74 61 63 68 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 29 3b 0a 76 6f 69 64 20 50 | ad_detach(pthread_t.tid);.void.P |
| 8740 | 74 68 72 65 61 64 5f 65 78 69 74 28 76 6f 69 64 20 2a 72 65 74 76 61 6c 29 3b 0a 70 74 68 72 65 | thread_exit(void.*retval);.pthre |
| 8760 | 61 64 5f 74 20 50 74 68 72 65 61 64 5f 73 65 6c 66 28 76 6f 69 64 29 3b 0a 76 6f 69 64 20 50 74 | ad_t.Pthread_self(void);.void.Pt |
| 8780 | 68 72 65 61 64 5f 6f 6e 63 65 28 70 74 68 72 65 61 64 5f 6f 6e 63 65 5f 74 20 2a 6f 6e 63 65 5f | hread_once(pthread_once_t.*once_ |
| 87a0 | 63 6f 6e 74 72 6f 6c 2c 20 76 6f 69 64 20 28 2a 69 6e 69 74 5f 66 75 6e 63 74 69 6f 6e 29 28 29 | control,.void.(*init_function)() |
| 87c0 | 29 3b 0a 0a 2f 2a 20 50 4f 53 49 58 20 73 65 6d 61 70 68 6f 72 65 20 77 72 61 70 70 65 72 73 20 | );../*.POSIX.semaphore.wrappers. |
| 87e0 | 2a 2f 0a 76 6f 69 64 20 53 65 6d 5f 69 6e 69 74 28 73 65 6d 5f 74 20 2a 73 65 6d 2c 20 69 6e 74 | */.void.Sem_init(sem_t.*sem,.int |
| 8800 | 20 70 73 68 61 72 65 64 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 76 61 6c 75 65 29 3b 0a 76 | .pshared,.unsigned.int.value);.v |
| 8820 | 6f 69 64 20 50 28 73 65 6d 5f 74 20 2a 73 65 6d 29 3b 0a 76 6f 69 64 20 56 28 73 65 6d 5f 74 20 | oid.P(sem_t.*sem);.void.V(sem_t. |
| 8840 | 2a 73 65 6d 29 3b 0a 0a 2f 2a 20 52 69 6f 20 28 52 6f 62 75 73 74 20 49 2f 4f 29 20 70 61 63 6b | *sem);../*.Rio.(Robust.I/O).pack |
| 8860 | 61 67 65 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 72 69 6f 5f 72 65 61 64 6e 28 69 6e 74 20 66 64 2c | age.*/.ssize_t.rio_readn(int.fd, |
| 8880 | 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 73 73 69 7a 65 5f | .void.*usrbuf,.size_t.n);.ssize_ |
| 88a0 | 74 20 72 69 6f 5f 77 72 69 74 65 6e 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 | t.rio_writen(int.fd,.void.*usrbu |
| 88c0 | 66 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 76 6f 69 64 20 72 69 6f 5f 72 65 61 64 69 6e 69 74 62 | f,.size_t.n);.void.rio_readinitb |
| 88e0 | 28 72 69 6f 5f 74 20 2a 72 70 2c 20 69 6e 74 20 66 64 29 3b 20 0a 73 73 69 7a 65 5f 74 09 72 69 | (rio_t.*rp,.int.fd);..ssize_t.ri |
| 8900 | 6f 5f 72 65 61 64 6e 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 | o_readnb(rio_t.*rp,.void.*usrbuf |
| 8920 | 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 73 73 69 7a 65 5f 74 09 72 69 6f 5f 72 65 61 64 6c 69 6e | ,.size_t.n);.ssize_t.rio_readlin |
| 8940 | 65 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 | eb(rio_t.*rp,.void.*usrbuf,.size |
| 8960 | 5f 74 20 6d 61 78 6c 65 6e 29 3b 0a 0a 2f 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 52 69 6f | _t.maxlen);../*.Wrappers.for.Rio |
| 8980 | 20 70 61 63 6b 61 67 65 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 52 69 6f 5f 72 65 61 64 6e 28 69 6e | .package.*/.ssize_t.Rio_readn(in |
| 89a0 | 74 20 66 64 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 76 | t.fd,.void.*usrbuf,.size_t.n);.v |
| 89c0 | 6f 69 64 20 52 69 6f 5f 77 72 69 74 65 6e 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a 75 73 72 | oid.Rio_writen(int.fd,.void.*usr |
| 89e0 | 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 76 6f 69 64 20 52 69 6f 5f 72 65 61 64 69 6e 69 | buf,.size_t.n);.void.Rio_readini |
| 8a00 | 74 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 69 6e 74 20 66 64 29 3b 20 0a 73 73 69 7a 65 5f 74 20 | tb(rio_t.*rp,.int.fd);..ssize_t. |
| 8a20 | 52 69 6f 5f 72 65 61 64 6e 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 | Rio_readnb(rio_t.*rp,.void.*usrb |
| 8a40 | 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 73 73 69 7a 65 5f 74 20 52 69 6f 5f 72 65 61 64 6c | uf,.size_t.n);.ssize_t.Rio_readl |
| 8a60 | 69 6e 65 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 | ineb(rio_t.*rp,.void.*usrbuf,.si |
| 8a80 | 7a 65 5f 74 20 6d 61 78 6c 65 6e 29 3b 0a 0a 2f 2a 20 52 65 65 6e 74 72 61 6e 74 20 70 72 6f 74 | ze_t.maxlen);../*.Reentrant.prot |
| 8aa0 | 6f 63 6f 6c 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 63 6c 69 65 6e 74 2f 73 65 72 76 65 72 20 68 | ocol-independent.client/server.h |
| 8ac0 | 65 6c 70 65 72 73 20 2a 2f 0a 69 6e 74 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 28 63 68 61 72 | elpers.*/.int.open_clientfd(char |
| 8ae0 | 20 2a 68 6f 73 74 6e 61 6d 65 2c 20 63 68 61 72 20 2a 70 6f 72 74 29 3b 0a 69 6e 74 20 6f 70 65 | .*hostname,.char.*port);.int.ope |
| 8b00 | 6e 5f 6c 69 73 74 65 6e 66 64 28 63 68 61 72 20 2a 70 6f 72 74 29 3b 0a 0a 2f 2a 20 57 72 61 70 | n_listenfd(char.*port);../*.Wrap |
| 8b20 | 70 65 72 73 20 66 6f 72 20 72 65 65 6e 74 72 61 6e 74 20 70 72 6f 74 6f 63 6f 6c 2d 69 6e 64 65 | pers.for.reentrant.protocol-inde |
| 8b40 | 70 65 6e 64 65 6e 74 20 63 6c 69 65 6e 74 2f 73 65 72 76 65 72 20 68 65 6c 70 65 72 73 20 2a 2f | pendent.client/server.helpers.*/ |
| 8b60 | 0a 69 6e 74 20 4f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 28 63 68 61 72 20 2a 68 6f 73 74 6e 61 6d | .int.Open_clientfd(char.*hostnam |
| 8b80 | 65 2c 20 63 68 61 72 20 2a 70 6f 72 74 29 3b 0a 69 6e 74 20 4f 70 65 6e 5f 6c 69 73 74 65 6e 66 | e,.char.*port);.int.Open_listenf |
| 8ba0 | 64 28 63 68 61 72 20 2a 70 6f 72 74 29 3b 0a 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 5f 5f 43 53 41 | d(char.*port);...#endif./*.__CSA |
| 8bc0 | 50 50 5f 48 5f 5f 20 2a 2f 0a 2f 2a 20 24 65 6e 64 20 63 73 61 70 70 2e 68 20 2a 2f 0a 00 00 00 | PP_H__.*/./*.$end.csapp.h.*/.... |
| 8be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8c00 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 00 00 00 00 00 00 00 00 00 00 | proxylab-handout/tiny/.......... |
| 8c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8c60 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000755.0006626.0000144.0000 |
| 8c80 | 30 30 30 30 30 30 30 00 31 33 35 36 33 33 31 30 34 35 37 00 30 31 33 33 35 35 00 20 35 00 00 00 | 0000000.13563310457.013355..5... |
| 8ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8d00 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 8d20 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 8d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8e00 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 74 69 6e 79 2e 63 00 00 00 00 | proxylab-handout/tiny/tiny.c.... |
| 8e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8e60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 8e80 | 30 30 32 30 36 35 35 00 31 33 35 36 33 33 31 30 32 30 32 00 30 31 34 35 30 30 00 20 30 00 00 00 | 0020655.13563310202.014500..0... |
| 8ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8f00 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 8f20 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 8f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9000 | 2f 2a 20 24 62 65 67 69 6e 20 74 69 6e 79 6d 61 69 6e 20 2a 2f 0a 2f 2a 0a 20 2a 20 74 69 6e 79 | /*.$begin.tinymain.*/./*..*.tiny |
| 9020 | 2e 63 20 2d 20 41 20 73 69 6d 70 6c 65 2c 20 69 74 65 72 61 74 69 76 65 20 48 54 54 50 2f 31 2e | .c.-.A.simple,.iterative.HTTP/1. |
| 9040 | 30 20 57 65 62 20 73 65 72 76 65 72 20 74 68 61 74 20 75 73 65 73 20 74 68 65 20 0a 20 2a 20 20 | 0.Web.server.that.uses.the...*.. |
| 9060 | 20 20 20 47 45 54 20 6d 65 74 68 6f 64 20 74 6f 20 73 65 72 76 65 20 73 74 61 74 69 63 20 61 6e | ...GET.method.to.serve.static.an |
| 9080 | 64 20 64 79 6e 61 6d 69 63 20 63 6f 6e 74 65 6e 74 2e 0a 20 2a 0a 20 2a 20 55 70 64 61 74 65 64 | d.dynamic.content...*..*.Updated |
| 90a0 | 20 31 31 2f 32 30 31 39 20 64 72 6f 68 20 0a 20 2a 20 20 20 2d 20 46 69 78 65 64 20 73 70 72 69 | .11/2019.droh...*...-.Fixed.spri |
| 90c0 | 6e 74 66 28 29 20 61 6c 69 61 73 69 6e 67 20 69 73 73 75 65 20 69 6e 20 73 65 72 76 65 5f 73 74 | ntf().aliasing.issue.in.serve_st |
| 90e0 | 61 74 69 63 28 29 2c 20 61 6e 64 20 63 6c 69 65 6e 74 65 72 72 6f 72 28 29 2e 0a 20 2a 2f 0a 23 | atic(),.and.clienterror()...*/.# |
| 9100 | 69 6e 63 6c 75 64 65 20 22 63 73 61 70 70 2e 68 22 0a 0a 76 6f 69 64 20 64 6f 69 74 28 69 6e 74 | include."csapp.h"..void.doit(int |
| 9120 | 20 66 64 29 3b 0a 76 6f 69 64 20 72 65 61 64 5f 72 65 71 75 65 73 74 68 64 72 73 28 72 69 6f 5f | .fd);.void.read_requesthdrs(rio_ |
| 9140 | 74 20 2a 72 70 29 3b 0a 69 6e 74 20 70 61 72 73 65 5f 75 72 69 28 63 68 61 72 20 2a 75 72 69 2c | t.*rp);.int.parse_uri(char.*uri, |
| 9160 | 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 68 61 72 20 2a 63 67 69 61 72 67 73 29 3b | .char.*filename,.char.*cgiargs); |
| 9180 | 0a 76 6f 69 64 20 73 65 72 76 65 5f 73 74 61 74 69 63 28 69 6e 74 20 66 64 2c 20 63 68 61 72 20 | .void.serve_static(int.fd,.char. |
| 91a0 | 2a 66 69 6c 65 6e 61 6d 65 2c 20 69 6e 74 20 66 69 6c 65 73 69 7a 65 29 3b 0a 76 6f 69 64 20 67 | *filename,.int.filesize);.void.g |
| 91c0 | 65 74 5f 66 69 6c 65 74 79 70 65 28 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 68 61 72 | et_filetype(char.*filename,.char |
| 91e0 | 20 2a 66 69 6c 65 74 79 70 65 29 3b 0a 76 6f 69 64 20 73 65 72 76 65 5f 64 79 6e 61 6d 69 63 28 | .*filetype);.void.serve_dynamic( |
| 9200 | 69 6e 74 20 66 64 2c 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 68 61 72 20 2a 63 67 | int.fd,.char.*filename,.char.*cg |
| 9220 | 69 61 72 67 73 29 3b 0a 76 6f 69 64 20 63 6c 69 65 6e 74 65 72 72 6f 72 28 69 6e 74 20 66 64 2c | iargs);.void.clienterror(int.fd, |
| 9240 | 20 63 68 61 72 20 2a 63 61 75 73 65 2c 20 63 68 61 72 20 2a 65 72 72 6e 75 6d 2c 20 0a 09 09 20 | .char.*cause,.char.*errnum,..... |
| 9260 | 63 68 61 72 20 2a 73 68 6f 72 74 6d 73 67 2c 20 63 68 61 72 20 2a 6c 6f 6e 67 6d 73 67 29 3b 0a | char.*shortmsg,.char.*longmsg);. |
| 9280 | 0a 69 6e 74 20 6d 61 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61 72 20 2a 2a 61 72 67 76 29 | .int.main(int.argc,.char.**argv) |
| 92a0 | 20 0a 7b 0a 20 20 20 20 69 6e 74 20 6c 69 73 74 65 6e 66 64 2c 20 63 6f 6e 6e 66 64 3b 0a 20 20 | ..{.....int.listenfd,.connfd;... |
| 92c0 | 20 20 63 68 61 72 20 68 6f 73 74 6e 61 6d 65 5b 4d 41 58 4c 49 4e 45 5d 2c 20 70 6f 72 74 5b 4d | ..char.hostname[MAXLINE],.port[M |
| 92e0 | 41 58 4c 49 4e 45 5d 3b 0a 20 20 20 20 73 6f 63 6b 6c 65 6e 5f 74 20 63 6c 69 65 6e 74 6c 65 6e | AXLINE];.....socklen_t.clientlen |
| 9300 | 3b 0a 20 20 20 20 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 5f 73 74 6f 72 61 67 65 20 63 6c | ;.....struct.sockaddr_storage.cl |
| 9320 | 69 65 6e 74 61 64 64 72 3b 0a 0a 20 20 20 20 2f 2a 20 43 68 65 63 6b 20 63 6f 6d 6d 61 6e 64 20 | ientaddr;....../*.Check.command. |
| 9340 | 6c 69 6e 65 20 61 72 67 73 20 2a 2f 0a 20 20 20 20 69 66 20 28 61 72 67 63 20 21 3d 20 32 29 20 | line.args.*/.....if.(argc.!=.2). |
| 9360 | 7b 0a 09 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 75 73 61 67 65 3a 20 25 73 20 3c 70 | {..fprintf(stderr,."usage:.%s.<p |
| 9380 | 6f 72 74 3e 5c 6e 22 2c 20 61 72 67 76 5b 30 5d 29 3b 0a 09 65 78 69 74 28 31 29 3b 0a 20 20 20 | ort>\n",.argv[0]);..exit(1);.... |
| 93a0 | 20 7d 0a 0a 20 20 20 20 6c 69 73 74 65 6e 66 64 20 3d 20 4f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 | .}......listenfd.=.Open_listenfd |
| 93c0 | 28 61 72 67 76 5b 31 5d 29 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 31 29 20 7b 0a 09 63 6c 69 65 | (argv[1]);.....while.(1).{..clie |
| 93e0 | 6e 74 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 63 6c 69 65 6e 74 61 64 64 72 29 3b 0a 09 63 6f 6e | ntlen.=.sizeof(clientaddr);..con |
| 9400 | 6e 66 64 20 3d 20 41 63 63 65 70 74 28 6c 69 73 74 65 6e 66 64 2c 20 28 53 41 20 2a 29 26 63 6c | nfd.=.Accept(listenfd,.(SA.*)&cl |
| 9420 | 69 65 6e 74 61 64 64 72 2c 20 26 63 6c 69 65 6e 74 6c 65 6e 29 3b 20 2f 2f 6c 69 6e 65 3a 6e 65 | ientaddr,.&clientlen);.//line:ne |
| 9440 | 74 70 3a 74 69 6e 79 3a 61 63 63 65 70 74 0a 20 20 20 20 20 20 20 20 47 65 74 6e 61 6d 65 69 6e | tp:tiny:accept.........Getnamein |
| 9460 | 66 6f 28 28 53 41 20 2a 29 20 26 63 6c 69 65 6e 74 61 64 64 72 2c 20 63 6c 69 65 6e 74 6c 65 6e | fo((SA.*).&clientaddr,.clientlen |
| 9480 | 2c 20 68 6f 73 74 6e 61 6d 65 2c 20 4d 41 58 4c 49 4e 45 2c 20 0a 20 20 20 20 20 20 20 20 20 20 | ,.hostname,.MAXLINE,............ |
| 94a0 | 20 20 20 20 20 20 20 20 20 20 70 6f 72 74 2c 20 4d 41 58 4c 49 4e 45 2c 20 30 29 3b 0a 20 20 20 | ..........port,.MAXLINE,.0);.... |
| 94c0 | 20 20 20 20 20 70 72 69 6e 74 66 28 22 41 63 63 65 70 74 65 64 20 63 6f 6e 6e 65 63 74 69 6f 6e | .....printf("Accepted.connection |
| 94e0 | 20 66 72 6f 6d 20 28 25 73 2c 20 25 73 29 5c 6e 22 2c 20 68 6f 73 74 6e 61 6d 65 2c 20 70 6f 72 | .from.(%s,.%s)\n",.hostname,.por |
| 9500 | 74 29 3b 0a 09 64 6f 69 74 28 63 6f 6e 6e 66 64 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | t);..doit(connfd);.............. |
| 9520 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f | .............................../ |
| 9540 | 2f 6c 69 6e 65 3a 6e 65 74 70 3a 74 69 6e 79 3a 64 6f 69 74 0a 09 43 6c 6f 73 65 28 63 6f 6e 6e | /line:netp:tiny:doit..Close(conn |
| 9560 | 66 64 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | fd);............................ |
| 9580 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 74 69 6e 79 | ................//line:netp:tiny |
| 95a0 | 3a 63 6c 6f 73 65 0a 20 20 20 20 7d 0a 7d 0a 2f 2a 20 24 65 6e 64 20 74 69 6e 79 6d 61 69 6e 20 | :close.....}.}./*.$end.tinymain. |
| 95c0 | 2a 2f 0a 0a 2f 2a 0a 20 2a 20 64 6f 69 74 20 2d 20 68 61 6e 64 6c 65 20 6f 6e 65 20 48 54 54 50 | */../*..*.doit.-.handle.one.HTTP |
| 95e0 | 20 72 65 71 75 65 73 74 2f 72 65 73 70 6f 6e 73 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 20 2a | .request/response.transaction..* |
| 9600 | 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 64 6f 69 74 20 2a 2f 0a 76 6f 69 64 20 64 6f 69 74 28 69 6e | /./*.$begin.doit.*/.void.doit(in |
| 9620 | 74 20 66 64 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 69 73 5f 73 74 61 74 69 63 3b 0a 20 20 20 20 | t.fd)..{.....int.is_static;..... |
| 9640 | 73 74 72 75 63 74 20 73 74 61 74 20 73 62 75 66 3b 0a 20 20 20 20 63 68 61 72 20 62 75 66 5b 4d | struct.stat.sbuf;.....char.buf[M |
| 9660 | 41 58 4c 49 4e 45 5d 2c 20 6d 65 74 68 6f 64 5b 4d 41 58 4c 49 4e 45 5d 2c 20 75 72 69 5b 4d 41 | AXLINE],.method[MAXLINE],.uri[MA |
| 9680 | 58 4c 49 4e 45 5d 2c 20 76 65 72 73 69 6f 6e 5b 4d 41 58 4c 49 4e 45 5d 3b 0a 20 20 20 20 63 68 | XLINE],.version[MAXLINE];.....ch |
| 96a0 | 61 72 20 66 69 6c 65 6e 61 6d 65 5b 4d 41 58 4c 49 4e 45 5d 2c 20 63 67 69 61 72 67 73 5b 4d 41 | ar.filename[MAXLINE],.cgiargs[MA |
| 96c0 | 58 4c 49 4e 45 5d 3b 0a 20 20 20 20 72 69 6f 5f 74 20 72 69 6f 3b 0a 0a 20 20 20 20 2f 2a 20 52 | XLINE];.....rio_t.rio;....../*.R |
| 96e0 | 65 61 64 20 72 65 71 75 65 73 74 20 6c 69 6e 65 20 61 6e 64 20 68 65 61 64 65 72 73 20 2a 2f 0a | ead.request.line.and.headers.*/. |
| 9700 | 20 20 20 20 52 69 6f 5f 72 65 61 64 69 6e 69 74 62 28 26 72 69 6f 2c 20 66 64 29 3b 0a 20 20 20 | ....Rio_readinitb(&rio,.fd);.... |
| 9720 | 20 69 66 20 28 21 52 69 6f 5f 72 65 61 64 6c 69 6e 65 62 28 26 72 69 6f 2c 20 62 75 66 2c 20 4d | .if.(!Rio_readlineb(&rio,.buf,.M |
| 9740 | 41 58 4c 49 4e 45 29 29 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 64 6f 69 74 3a 72 65 61 64 72 | AXLINE))..//line:netp:doit:readr |
| 9760 | 65 71 75 65 73 74 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 70 72 69 6e 74 | equest.........return;.....print |
| 9780 | 66 28 22 25 73 22 2c 20 62 75 66 29 3b 0a 20 20 20 20 73 73 63 61 6e 66 28 62 75 66 2c 20 22 25 | f("%s",.buf);.....sscanf(buf,."% |
| 97a0 | 73 20 25 73 20 25 73 22 2c 20 6d 65 74 68 6f 64 2c 20 75 72 69 2c 20 76 65 72 73 69 6f 6e 29 3b | s.%s.%s",.method,.uri,.version); |
| 97c0 | 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 64 6f 69 74 3a 70 61 72 73 65 72 65 71 | .......//line:netp:doit:parsereq |
| 97e0 | 75 65 73 74 0a 20 20 20 20 69 66 20 28 73 74 72 63 61 73 65 63 6d 70 28 6d 65 74 68 6f 64 2c 20 | uest.....if.(strcasecmp(method,. |
| 9800 | 22 47 45 54 22 29 29 20 7b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f | "GET")).{.....................// |
| 9820 | 6c 69 6e 65 3a 6e 65 74 70 3a 64 6f 69 74 3a 62 65 67 69 6e 72 65 71 75 65 73 74 65 72 72 0a 20 | line:netp:doit:beginrequesterr.. |
| 9840 | 20 20 20 20 20 20 20 63 6c 69 65 6e 74 65 72 72 6f 72 28 66 64 2c 20 6d 65 74 68 6f 64 2c 20 22 | .......clienterror(fd,.method,." |
| 9860 | 35 30 31 22 2c 20 22 4e 6f 74 20 49 6d 70 6c 65 6d 65 6e 74 65 64 22 2c 0a 20 20 20 20 20 20 20 | 501",."Not.Implemented",........ |
| 9880 | 20 20 20 20 20 20 20 20 20 20 20 20 20 22 54 69 6e 79 20 64 6f 65 73 20 6e 6f 74 20 69 6d 70 6c | ............."Tiny.does.not.impl |
| 98a0 | 65 6d 65 6e 74 20 74 68 69 73 20 6d 65 74 68 6f 64 22 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 | ement.this.method");.........ret |
| 98c0 | 75 72 6e 3b 0a 20 20 20 20 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | urn;.....}...................... |
| 98e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f | ..............................// |
| 9900 | 6c 69 6e 65 3a 6e 65 74 70 3a 64 6f 69 74 3a 65 6e 64 72 65 71 75 65 73 74 65 72 72 0a 20 20 20 | line:netp:doit:endrequesterr.... |
| 9920 | 20 72 65 61 64 5f 72 65 71 75 65 73 74 68 64 72 73 28 26 72 69 6f 29 3b 20 20 20 20 20 20 20 20 | .read_requesthdrs(&rio);........ |
| 9940 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 | ......................//line:net |
| 9960 | 70 3a 64 6f 69 74 3a 72 65 61 64 72 65 71 75 65 73 74 68 64 72 73 0a 0a 20 20 20 20 2f 2a 20 50 | p:doit:readrequesthdrs....../*.P |
| 9980 | 61 72 73 65 20 55 52 49 20 66 72 6f 6d 20 47 45 54 20 72 65 71 75 65 73 74 20 2a 2f 0a 20 20 20 | arse.URI.from.GET.request.*/.... |
| 99a0 | 20 69 73 5f 73 74 61 74 69 63 20 3d 20 70 61 72 73 65 5f 75 72 69 28 75 72 69 2c 20 66 69 6c 65 | .is_static.=.parse_uri(uri,.file |
| 99c0 | 6e 61 6d 65 2c 20 63 67 69 61 72 67 73 29 3b 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 | name,.cgiargs);.......//line:net |
| 99e0 | 70 3a 64 6f 69 74 3a 73 74 61 74 69 63 63 68 65 63 6b 0a 20 20 20 20 69 66 20 28 73 74 61 74 28 | p:doit:staticcheck.....if.(stat( |
| 9a00 | 66 69 6c 65 6e 61 6d 65 2c 20 26 73 62 75 66 29 20 3c 20 30 29 20 7b 20 20 20 20 20 20 20 20 20 | filename,.&sbuf).<.0).{......... |
| 9a20 | 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 64 6f 69 74 3a 62 65 67 | ............//line:netp:doit:beg |
| 9a40 | 69 6e 6e 6f 74 66 6f 75 6e 64 0a 09 63 6c 69 65 6e 74 65 72 72 6f 72 28 66 64 2c 20 66 69 6c 65 | innotfound..clienterror(fd,.file |
| 9a60 | 6e 61 6d 65 2c 20 22 34 30 34 22 2c 20 22 4e 6f 74 20 66 6f 75 6e 64 22 2c 0a 09 09 20 20 20 20 | name,."404",."Not.found",....... |
| 9a80 | 22 54 69 6e 79 20 63 6f 75 6c 64 6e 27 74 20 66 69 6e 64 20 74 68 69 73 20 66 69 6c 65 22 29 3b | "Tiny.couldn't.find.this.file"); |
| 9aa0 | 0a 09 72 65 74 75 72 6e 3b 0a 20 20 20 20 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..return;.....}................. |
| 9ac0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 9ae0 | 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 64 6f 69 74 3a 65 6e 64 6e 6f 74 66 6f 75 6e 64 0a | ...//line:netp:doit:endnotfound. |
| 9b00 | 0a 20 20 20 20 69 66 20 28 69 73 5f 73 74 61 74 69 63 29 20 7b 20 2f 2a 20 53 65 72 76 65 20 73 | .....if.(is_static).{./*.Serve.s |
| 9b20 | 74 61 74 69 63 20 63 6f 6e 74 65 6e 74 20 2a 2f 20 20 20 20 20 20 20 20 20 20 0a 09 69 66 20 28 | tatic.content.*/............if.( |
| 9b40 | 21 28 53 5f 49 53 52 45 47 28 73 62 75 66 2e 73 74 5f 6d 6f 64 65 29 29 20 7c 7c 20 21 28 53 5f | !(S_ISREG(sbuf.st_mode)).||.!(S_ |
| 9b60 | 49 52 55 53 52 20 26 20 73 62 75 66 2e 73 74 5f 6d 6f 64 65 29 29 20 7b 20 2f 2f 6c 69 6e 65 3a | IRUSR.&.sbuf.st_mode)).{.//line: |
| 9b80 | 6e 65 74 70 3a 64 6f 69 74 3a 72 65 61 64 61 62 6c 65 0a 09 20 20 20 20 63 6c 69 65 6e 74 65 72 | netp:doit:readable......clienter |
| 9ba0 | 72 6f 72 28 66 64 2c 20 66 69 6c 65 6e 61 6d 65 2c 20 22 34 30 33 22 2c 20 22 46 6f 72 62 69 64 | ror(fd,.filename,."403",."Forbid |
| 9bc0 | 64 65 6e 22 2c 0a 09 09 09 22 54 69 6e 79 20 63 6f 75 6c 64 6e 27 74 20 72 65 61 64 20 74 68 65 | den",...."Tiny.couldn't.read.the |
| 9be0 | 20 66 69 6c 65 22 29 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 73 65 72 76 65 5f | .file");......return;..}..serve_ |
| 9c00 | 73 74 61 74 69 63 28 66 64 2c 20 66 69 6c 65 6e 61 6d 65 2c 20 73 62 75 66 2e 73 74 5f 73 69 7a | static(fd,.filename,.sbuf.st_siz |
| 9c20 | 65 29 3b 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 64 6f 69 74 3a 73 65 72 76 | e);........//line:netp:doit:serv |
| 9c40 | 65 73 74 61 74 69 63 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 7b 20 2f 2a 20 53 65 72 76 | estatic.....}.....else.{./*.Serv |
| 9c60 | 65 20 64 79 6e 61 6d 69 63 20 63 6f 6e 74 65 6e 74 20 2a 2f 0a 09 69 66 20 28 21 28 53 5f 49 53 | e.dynamic.content.*/..if.(!(S_IS |
| 9c80 | 52 45 47 28 73 62 75 66 2e 73 74 5f 6d 6f 64 65 29 29 20 7c 7c 20 21 28 53 5f 49 58 55 53 52 20 | REG(sbuf.st_mode)).||.!(S_IXUSR. |
| 9ca0 | 26 20 73 62 75 66 2e 73 74 5f 6d 6f 64 65 29 29 20 7b 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 64 | &.sbuf.st_mode)).{.//line:netp:d |
| 9cc0 | 6f 69 74 3a 65 78 65 63 75 74 61 62 6c 65 0a 09 20 20 20 20 63 6c 69 65 6e 74 65 72 72 6f 72 28 | oit:executable......clienterror( |
| 9ce0 | 66 64 2c 20 66 69 6c 65 6e 61 6d 65 2c 20 22 34 30 33 22 2c 20 22 46 6f 72 62 69 64 64 65 6e 22 | fd,.filename,."403",."Forbidden" |
| 9d00 | 2c 0a 09 09 09 22 54 69 6e 79 20 63 6f 75 6c 64 6e 27 74 20 72 75 6e 20 74 68 65 20 43 47 49 20 | ,...."Tiny.couldn't.run.the.CGI. |
| 9d20 | 70 72 6f 67 72 61 6d 22 29 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 73 65 72 76 | program");......return;..}..serv |
| 9d40 | 65 5f 64 79 6e 61 6d 69 63 28 66 64 2c 20 66 69 6c 65 6e 61 6d 65 2c 20 63 67 69 61 72 67 73 29 | e_dynamic(fd,.filename,.cgiargs) |
| 9d60 | 3b 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 64 6f 69 74 3a 73 65 | ;............//line:netp:doit:se |
| 9d80 | 72 76 65 64 79 6e 61 6d 69 63 0a 20 20 20 20 7d 0a 7d 0a 2f 2a 20 24 65 6e 64 20 64 6f 69 74 20 | rvedynamic.....}.}./*.$end.doit. |
| 9da0 | 2a 2f 0a 0a 2f 2a 0a 20 2a 20 72 65 61 64 5f 72 65 71 75 65 73 74 68 64 72 73 20 2d 20 72 65 61 | */../*..*.read_requesthdrs.-.rea |
| 9dc0 | 64 20 48 54 54 50 20 72 65 71 75 65 73 74 20 68 65 61 64 65 72 73 0a 20 2a 2f 0a 2f 2a 20 24 62 | d.HTTP.request.headers..*/./*.$b |
| 9de0 | 65 67 69 6e 20 72 65 61 64 5f 72 65 71 75 65 73 74 68 64 72 73 20 2a 2f 0a 76 6f 69 64 20 72 65 | egin.read_requesthdrs.*/.void.re |
| 9e00 | 61 64 5f 72 65 71 75 65 73 74 68 64 72 73 28 72 69 6f 5f 74 20 2a 72 70 29 20 0a 7b 0a 20 20 20 | ad_requesthdrs(rio_t.*rp)..{.... |
| 9e20 | 20 63 68 61 72 20 62 75 66 5b 4d 41 58 4c 49 4e 45 5d 3b 0a 0a 20 20 20 20 52 69 6f 5f 72 65 61 | .char.buf[MAXLINE];......Rio_rea |
| 9e40 | 64 6c 69 6e 65 62 28 72 70 2c 20 62 75 66 2c 20 4d 41 58 4c 49 4e 45 29 3b 0a 20 20 20 20 70 72 | dlineb(rp,.buf,.MAXLINE);.....pr |
| 9e60 | 69 6e 74 66 28 22 25 73 22 2c 20 62 75 66 29 3b 0a 20 20 20 20 77 68 69 6c 65 28 73 74 72 63 6d | intf("%s",.buf);.....while(strcm |
| 9e80 | 70 28 62 75 66 2c 20 22 5c 72 5c 6e 22 29 29 20 7b 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e | p(buf,."\r\n")).{..........//lin |
| 9ea0 | 65 3a 6e 65 74 70 3a 72 65 61 64 68 64 72 73 3a 63 68 65 63 6b 74 65 72 6d 0a 09 52 69 6f 5f 72 | e:netp:readhdrs:checkterm..Rio_r |
| 9ec0 | 65 61 64 6c 69 6e 65 62 28 72 70 2c 20 62 75 66 2c 20 4d 41 58 4c 49 4e 45 29 3b 0a 09 70 72 69 | eadlineb(rp,.buf,.MAXLINE);..pri |
| 9ee0 | 6e 74 66 28 22 25 73 22 2c 20 62 75 66 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e | ntf("%s",.buf);.....}.....return |
| 9f00 | 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 72 65 61 64 5f 72 65 71 75 65 73 74 68 64 72 73 20 2a 2f 0a | ;.}./*.$end.read_requesthdrs.*/. |
| 9f20 | 0a 2f 2a 0a 20 2a 20 70 61 72 73 65 5f 75 72 69 20 2d 20 70 61 72 73 65 20 55 52 49 20 69 6e 74 | ./*..*.parse_uri.-.parse.URI.int |
| 9f40 | 6f 20 66 69 6c 65 6e 61 6d 65 20 61 6e 64 20 43 47 49 20 61 72 67 73 0a 20 2a 20 20 20 20 20 20 | o.filename.and.CGI.args..*...... |
| 9f60 | 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 20 69 66 20 64 79 6e 61 6d 69 63 20 63 6f 6e 74 65 | .......return.0.if.dynamic.conte |
| 9f80 | 6e 74 2c 20 31 20 69 66 20 73 74 61 74 69 63 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 70 61 | nt,.1.if.static..*/./*.$begin.pa |
| 9fa0 | 72 73 65 5f 75 72 69 20 2a 2f 0a 69 6e 74 20 70 61 72 73 65 5f 75 72 69 28 63 68 61 72 20 2a 75 | rse_uri.*/.int.parse_uri(char.*u |
| 9fc0 | 72 69 2c 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 68 61 72 20 2a 63 67 69 61 72 67 | ri,.char.*filename,.char.*cgiarg |
| 9fe0 | 73 29 20 0a 7b 0a 20 20 20 20 63 68 61 72 20 2a 70 74 72 3b 0a 0a 20 20 20 20 69 66 20 28 21 73 | s)..{.....char.*ptr;......if.(!s |
| a000 | 74 72 73 74 72 28 75 72 69 2c 20 22 63 67 69 2d 62 69 6e 22 29 29 20 7b 20 20 2f 2a 20 53 74 61 | trstr(uri,."cgi-bin")).{../*.Sta |
| a020 | 74 69 63 20 63 6f 6e 74 65 6e 74 20 2a 2f 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 70 61 72 73 65 | tic.content.*/.//line:netp:parse |
| a040 | 75 72 69 3a 69 73 73 74 61 74 69 63 0a 09 73 74 72 63 70 79 28 63 67 69 61 72 67 73 2c 20 22 22 | uri:isstatic..strcpy(cgiargs,."" |
| a060 | 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f | );............................./ |
| a080 | 2f 6c 69 6e 65 3a 6e 65 74 70 3a 70 61 72 73 65 75 72 69 3a 63 6c 65 61 72 63 67 69 0a 09 73 74 | /line:netp:parseuri:clearcgi..st |
| a0a0 | 72 63 70 79 28 66 69 6c 65 6e 61 6d 65 2c 20 22 2e 22 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 | rcpy(filename,.".");............ |
| a0c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 70 61 72 73 65 | ...............//line:netp:parse |
| a0e0 | 75 72 69 3a 62 65 67 69 6e 63 6f 6e 76 65 72 74 31 0a 09 73 74 72 63 61 74 28 66 69 6c 65 6e 61 | uri:beginconvert1..strcat(filena |
| a100 | 6d 65 2c 20 75 72 69 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | me,.uri);....................... |
| a120 | 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 70 61 72 73 65 75 72 69 3a 65 6e 64 63 6f 6e 76 | ....//line:netp:parseuri:endconv |
| a140 | 65 72 74 31 0a 09 69 66 20 28 75 72 69 5b 73 74 72 6c 65 6e 28 75 72 69 29 2d 31 5d 20 3d 3d 20 | ert1..if.(uri[strlen(uri)-1].==. |
| a160 | 27 2f 27 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 | '/')...................//line:ne |
| a180 | 74 70 3a 70 61 72 73 65 75 72 69 3a 73 6c 61 73 68 63 68 65 63 6b 0a 09 20 20 20 20 73 74 72 63 | tp:parseuri:slashcheck......strc |
| a1a0 | 61 74 28 66 69 6c 65 6e 61 6d 65 2c 20 22 68 6f 6d 65 2e 68 74 6d 6c 22 29 3b 20 20 20 20 20 20 | at(filename,."home.html");...... |
| a1c0 | 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 70 61 72 73 65 75 72 69 3a 61 70 | .........//line:netp:parseuri:ap |
| a1e0 | 70 65 6e 64 64 65 66 61 75 6c 74 0a 09 72 65 74 75 72 6e 20 31 3b 0a 20 20 20 20 7d 0a 20 20 20 | penddefault..return.1;.....}.... |
| a200 | 20 65 6c 73 65 20 7b 20 20 2f 2a 20 44 79 6e 61 6d 69 63 20 63 6f 6e 74 65 6e 74 20 2a 2f 20 20 | .else.{../*.Dynamic.content.*/.. |
| a220 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 | ......................//line:net |
| a240 | 70 3a 70 61 72 73 65 75 72 69 3a 69 73 64 79 6e 61 6d 69 63 0a 09 70 74 72 20 3d 20 69 6e 64 65 | p:parseuri:isdynamic..ptr.=.inde |
| a260 | 78 28 75 72 69 2c 20 27 3f 27 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | x(uri,.'?');.................... |
| a280 | 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 70 61 72 73 65 75 72 69 3a 62 65 67 69 | .......//line:netp:parseuri:begi |
| a2a0 | 6e 65 78 74 72 61 63 74 0a 09 69 66 20 28 70 74 72 29 20 7b 0a 09 20 20 20 20 73 74 72 63 70 79 | nextract..if.(ptr).{......strcpy |
| a2c0 | 28 63 67 69 61 72 67 73 2c 20 70 74 72 2b 31 29 3b 0a 09 20 20 20 20 2a 70 74 72 20 3d 20 27 5c | (cgiargs,.ptr+1);......*ptr.=.'\ |
| a2e0 | 30 27 3b 0a 09 7d 0a 09 65 6c 73 65 20 0a 09 20 20 20 20 73 74 72 63 70 79 28 63 67 69 61 72 67 | 0';..}..else.......strcpy(cgiarg |
| a300 | 73 2c 20 22 22 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | s,."");......................... |
| a320 | 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 70 61 72 73 65 75 72 69 3a 65 6e 64 65 78 74 72 61 63 74 0a | //line:netp:parseuri:endextract. |
| a340 | 09 73 74 72 63 70 79 28 66 69 6c 65 6e 61 6d 65 2c 20 22 2e 22 29 3b 20 20 20 20 20 20 20 20 20 | .strcpy(filename,.".");......... |
| a360 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 70 61 | ..................//line:netp:pa |
| a380 | 72 73 65 75 72 69 3a 62 65 67 69 6e 63 6f 6e 76 65 72 74 32 0a 09 73 74 72 63 61 74 28 66 69 6c | rseuri:beginconvert2..strcat(fil |
| a3a0 | 65 6e 61 6d 65 2c 20 75 72 69 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ename,.uri);.................... |
| a3c0 | 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 70 61 72 73 65 75 72 69 3a 65 6e 64 63 | .......//line:netp:parseuri:endc |
| a3e0 | 6f 6e 76 65 72 74 32 0a 09 72 65 74 75 72 6e 20 30 3b 0a 20 20 20 20 7d 0a 7d 0a 2f 2a 20 24 65 | onvert2..return.0;.....}.}./*.$e |
| a400 | 6e 64 20 70 61 72 73 65 5f 75 72 69 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 73 65 72 76 65 5f 73 74 61 | nd.parse_uri.*/../*..*.serve_sta |
| a420 | 74 69 63 20 2d 20 63 6f 70 79 20 61 20 66 69 6c 65 20 62 61 63 6b 20 74 6f 20 74 68 65 20 63 6c | tic.-.copy.a.file.back.to.the.cl |
| a440 | 69 65 6e 74 20 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 73 65 72 76 65 5f 73 74 61 74 69 63 | ient...*/./*.$begin.serve_static |
| a460 | 20 2a 2f 0a 76 6f 69 64 20 73 65 72 76 65 5f 73 74 61 74 69 63 28 69 6e 74 20 66 64 2c 20 63 68 | .*/.void.serve_static(int.fd,.ch |
| a480 | 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 69 6e 74 20 66 69 6c 65 73 69 7a 65 29 0a 7b 0a 20 20 | ar.*filename,.int.filesize).{... |
| a4a0 | 20 20 69 6e 74 20 73 72 63 66 64 3b 0a 20 20 20 20 63 68 61 72 20 2a 73 72 63 70 2c 20 66 69 6c | ..int.srcfd;.....char.*srcp,.fil |
| a4c0 | 65 74 79 70 65 5b 4d 41 58 4c 49 4e 45 5d 2c 20 62 75 66 5b 4d 41 58 42 55 46 5d 3b 0a 0a 20 20 | etype[MAXLINE],.buf[MAXBUF];.... |
| a4e0 | 20 20 2f 2a 20 53 65 6e 64 20 72 65 73 70 6f 6e 73 65 20 68 65 61 64 65 72 73 20 74 6f 20 63 6c | ../*.Send.response.headers.to.cl |
| a500 | 69 65 6e 74 20 2a 2f 0a 20 20 20 20 67 65 74 5f 66 69 6c 65 74 79 70 65 28 66 69 6c 65 6e 61 6d | ient.*/.....get_filetype(filenam |
| a520 | 65 2c 20 66 69 6c 65 74 79 70 65 29 3b 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 73 65 72 | e,.filetype);....//line:netp:ser |
| a540 | 76 65 73 74 61 74 69 63 3a 67 65 74 66 69 6c 65 74 79 70 65 0a 20 20 20 20 73 70 72 69 6e 74 66 | vestatic:getfiletype.....sprintf |
| a560 | 28 62 75 66 2c 20 22 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 5c 72 5c 6e 22 29 3b 20 2f 2f | (buf,."HTTP/1.0.200.OK\r\n");.// |
| a580 | 6c 69 6e 65 3a 6e 65 74 70 3a 73 65 72 76 65 73 74 61 74 69 63 3a 62 65 67 69 6e 73 65 72 76 65 | line:netp:servestatic:beginserve |
| a5a0 | 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c 20 62 75 66 2c 20 73 74 72 6c 65 6e 28 | .....Rio_writen(fd,.buf,.strlen( |
| a5c0 | 62 75 66 29 29 3b 0a 20 20 20 20 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 53 65 72 76 65 72 3a | buf));.....sprintf(buf,."Server: |
| a5e0 | 20 54 69 6e 79 20 57 65 62 20 53 65 72 76 65 72 5c 72 5c 6e 22 29 3b 0a 20 20 20 20 52 69 6f 5f | .Tiny.Web.Server\r\n");.....Rio_ |
| a600 | 77 72 69 74 65 6e 28 66 64 2c 20 62 75 66 2c 20 73 74 72 6c 65 6e 28 62 75 66 29 29 3b 0a 20 20 | writen(fd,.buf,.strlen(buf));... |
| a620 | 20 20 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 43 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 3a 20 | ..sprintf(buf,."Content-length:. |
| a640 | 25 64 5c 72 5c 6e 22 2c 20 66 69 6c 65 73 69 7a 65 29 3b 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 | %d\r\n",.filesize);.....Rio_writ |
| a660 | 65 6e 28 66 64 2c 20 62 75 66 2c 20 73 74 72 6c 65 6e 28 62 75 66 29 29 3b 0a 20 20 20 20 73 70 | en(fd,.buf,.strlen(buf));.....sp |
| a680 | 72 69 6e 74 66 28 62 75 66 2c 20 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 25 73 5c 72 5c 6e | rintf(buf,."Content-type:.%s\r\n |
| a6a0 | 5c 72 5c 6e 22 2c 20 66 69 6c 65 74 79 70 65 29 3b 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 65 6e | \r\n",.filetype);.....Rio_writen |
| a6c0 | 28 66 64 2c 20 62 75 66 2c 20 73 74 72 6c 65 6e 28 62 75 66 29 29 3b 20 20 20 20 2f 2f 6c 69 6e | (fd,.buf,.strlen(buf));....//lin |
| a6e0 | 65 3a 6e 65 74 70 3a 73 65 72 76 65 73 74 61 74 69 63 3a 65 6e 64 73 65 72 76 65 0a 0a 20 20 20 | e:netp:servestatic:endserve..... |
| a700 | 20 2f 2a 20 53 65 6e 64 20 72 65 73 70 6f 6e 73 65 20 62 6f 64 79 20 74 6f 20 63 6c 69 65 6e 74 | ./*.Send.response.body.to.client |
| a720 | 20 2a 2f 0a 20 20 20 20 73 72 63 66 64 20 3d 20 4f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 4f | .*/.....srcfd.=.Open(filename,.O |
| a740 | 5f 52 44 4f 4e 4c 59 2c 20 30 29 3b 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 73 65 72 76 65 73 74 | _RDONLY,.0);.//line:netp:servest |
| a760 | 61 74 69 63 3a 6f 70 65 6e 0a 20 20 20 20 73 72 63 70 20 3d 20 4d 6d 61 70 28 30 2c 20 66 69 6c | atic:open.....srcp.=.Mmap(0,.fil |
| a780 | 65 73 69 7a 65 2c 20 50 52 4f 54 5f 52 45 41 44 2c 20 4d 41 50 5f 50 52 49 56 41 54 45 2c 20 73 | esize,.PROT_READ,.MAP_PRIVATE,.s |
| a7a0 | 72 63 66 64 2c 20 30 29 3b 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 73 65 72 76 65 73 74 61 74 69 | rcfd,.0);.//line:netp:servestati |
| a7c0 | 63 3a 6d 6d 61 70 0a 20 20 20 20 43 6c 6f 73 65 28 73 72 63 66 64 29 3b 20 20 20 20 20 20 20 20 | c:mmap.....Close(srcfd);........ |
| a7e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 73 65 72 76 65 | ...............//line:netp:serve |
| a800 | 73 74 61 74 69 63 3a 63 6c 6f 73 65 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c 20 | static:close.....Rio_writen(fd,. |
| a820 | 73 72 63 70 2c 20 66 69 6c 65 73 69 7a 65 29 3b 20 20 20 20 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 | srcp,.filesize);.....//line:netp |
| a840 | 3a 73 65 72 76 65 73 74 61 74 69 63 3a 77 72 69 74 65 0a 20 20 20 20 4d 75 6e 6d 61 70 28 73 72 | :servestatic:write.....Munmap(sr |
| a860 | 63 70 2c 20 66 69 6c 65 73 69 7a 65 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 69 6e | cp,.filesize);.............//lin |
| a880 | 65 3a 6e 65 74 70 3a 73 65 72 76 65 73 74 61 74 69 63 3a 6d 75 6e 6d 61 70 0a 7d 0a 0a 2f 2a 0a | e:netp:servestatic:munmap.}../*. |
| a8a0 | 20 2a 20 67 65 74 5f 66 69 6c 65 74 79 70 65 20 2d 20 64 65 72 69 76 65 20 66 69 6c 65 20 74 79 | .*.get_filetype.-.derive.file.ty |
| a8c0 | 70 65 20 66 72 6f 6d 20 66 69 6c 65 20 6e 61 6d 65 0a 20 2a 2f 0a 76 6f 69 64 20 67 65 74 5f 66 | pe.from.file.name..*/.void.get_f |
| a8e0 | 69 6c 65 74 79 70 65 28 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 68 61 72 20 2a 66 69 | iletype(char.*filename,.char.*fi |
| a900 | 6c 65 74 79 70 65 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 73 74 72 73 74 72 28 66 69 6c 65 6e 61 | letype)..{.....if.(strstr(filena |
| a920 | 6d 65 2c 20 22 2e 68 74 6d 6c 22 29 29 0a 09 73 74 72 63 70 79 28 66 69 6c 65 74 79 70 65 2c 20 | me,.".html"))..strcpy(filetype,. |
| a940 | 22 74 65 78 74 2f 68 74 6d 6c 22 29 3b 0a 20 20 20 20 65 6c 73 65 20 69 66 20 28 73 74 72 73 74 | "text/html");.....else.if.(strst |
| a960 | 72 28 66 69 6c 65 6e 61 6d 65 2c 20 22 2e 67 69 66 22 29 29 0a 09 73 74 72 63 70 79 28 66 69 6c | r(filename,.".gif"))..strcpy(fil |
| a980 | 65 74 79 70 65 2c 20 22 69 6d 61 67 65 2f 67 69 66 22 29 3b 0a 20 20 20 20 65 6c 73 65 20 69 66 | etype,."image/gif");.....else.if |
| a9a0 | 20 28 73 74 72 73 74 72 28 66 69 6c 65 6e 61 6d 65 2c 20 22 2e 70 6e 67 22 29 29 0a 09 73 74 72 | .(strstr(filename,.".png"))..str |
| a9c0 | 63 70 79 28 66 69 6c 65 74 79 70 65 2c 20 22 69 6d 61 67 65 2f 70 6e 67 22 29 3b 0a 20 20 20 20 | cpy(filetype,."image/png");..... |
| a9e0 | 65 6c 73 65 20 69 66 20 28 73 74 72 73 74 72 28 66 69 6c 65 6e 61 6d 65 2c 20 22 2e 6a 70 67 22 | else.if.(strstr(filename,.".jpg" |
| aa00 | 29 29 0a 09 73 74 72 63 70 79 28 66 69 6c 65 74 79 70 65 2c 20 22 69 6d 61 67 65 2f 6a 70 65 67 | ))..strcpy(filetype,."image/jpeg |
| aa20 | 22 29 3b 0a 20 20 20 20 65 6c 73 65 0a 09 73 74 72 63 70 79 28 66 69 6c 65 74 79 70 65 2c 20 22 | ");.....else..strcpy(filetype,." |
| aa40 | 74 65 78 74 2f 70 6c 61 69 6e 22 29 3b 0a 7d 20 20 0a 2f 2a 20 24 65 6e 64 20 73 65 72 76 65 5f | text/plain");.}.../*.$end.serve_ |
| aa60 | 73 74 61 74 69 63 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 73 65 72 76 65 5f 64 79 6e 61 6d 69 63 20 2d | static.*/../*..*.serve_dynamic.- |
| aa80 | 20 72 75 6e 20 61 20 43 47 49 20 70 72 6f 67 72 61 6d 20 6f 6e 20 62 65 68 61 6c 66 20 6f 66 20 | .run.a.CGI.program.on.behalf.of. |
| aaa0 | 74 68 65 20 63 6c 69 65 6e 74 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 73 65 72 76 65 5f 64 | the.client..*/./*.$begin.serve_d |
| aac0 | 79 6e 61 6d 69 63 20 2a 2f 0a 76 6f 69 64 20 73 65 72 76 65 5f 64 79 6e 61 6d 69 63 28 69 6e 74 | ynamic.*/.void.serve_dynamic(int |
| aae0 | 20 66 64 2c 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 68 61 72 20 2a 63 67 69 61 72 | .fd,.char.*filename,.char.*cgiar |
| ab00 | 67 73 29 20 0a 7b 0a 20 20 20 20 63 68 61 72 20 62 75 66 5b 4d 41 58 4c 49 4e 45 5d 2c 20 2a 65 | gs)..{.....char.buf[MAXLINE],.*e |
| ab20 | 6d 70 74 79 6c 69 73 74 5b 5d 20 3d 20 7b 20 4e 55 4c 4c 20 7d 3b 0a 0a 20 20 20 20 2f 2a 20 52 | mptylist[].=.{.NULL.};....../*.R |
| ab40 | 65 74 75 72 6e 20 66 69 72 73 74 20 70 61 72 74 20 6f 66 20 48 54 54 50 20 72 65 73 70 6f 6e 73 | eturn.first.part.of.HTTP.respons |
| ab60 | 65 20 2a 2f 0a 20 20 20 20 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 48 54 54 50 2f 31 2e 30 20 | e.*/.....sprintf(buf,."HTTP/1.0. |
| ab80 | 32 30 30 20 4f 4b 5c 72 5c 6e 22 29 3b 20 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 65 6e 28 66 64 | 200.OK\r\n");......Rio_writen(fd |
| aba0 | 2c 20 62 75 66 2c 20 73 74 72 6c 65 6e 28 62 75 66 29 29 3b 0a 20 20 20 20 73 70 72 69 6e 74 66 | ,.buf,.strlen(buf));.....sprintf |
| abc0 | 28 62 75 66 2c 20 22 53 65 72 76 65 72 3a 20 54 69 6e 79 20 57 65 62 20 53 65 72 76 65 72 5c 72 | (buf,."Server:.Tiny.Web.Server\r |
| abe0 | 5c 6e 22 29 3b 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c 20 62 75 66 2c 20 73 74 | \n");.....Rio_writen(fd,.buf,.st |
| ac00 | 72 6c 65 6e 28 62 75 66 29 29 3b 0a 20 20 0a 20 20 20 20 69 66 20 28 46 6f 72 6b 28 29 20 3d 3d | rlen(buf));........if.(Fork().== |
| ac20 | 20 30 29 20 7b 20 2f 2a 20 43 68 69 6c 64 20 2a 2f 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 73 65 | .0).{./*.Child.*/.//line:netp:se |
| ac40 | 72 76 65 64 79 6e 61 6d 69 63 3a 66 6f 72 6b 0a 09 2f 2a 20 52 65 61 6c 20 73 65 72 76 65 72 20 | rvedynamic:fork../*.Real.server. |
| ac60 | 77 6f 75 6c 64 20 73 65 74 20 61 6c 6c 20 43 47 49 20 76 61 72 73 20 68 65 72 65 20 2a 2f 0a 09 | would.set.all.CGI.vars.here.*/.. |
| ac80 | 73 65 74 65 6e 76 28 22 51 55 45 52 59 5f 53 54 52 49 4e 47 22 2c 20 63 67 69 61 72 67 73 2c 20 | setenv("QUERY_STRING",.cgiargs,. |
| aca0 | 31 29 3b 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 73 65 72 76 65 64 79 6e 61 6d 69 63 3a 73 65 74 | 1);.//line:netp:servedynamic:set |
| acc0 | 65 6e 76 0a 09 44 75 70 32 28 66 64 2c 20 53 54 44 4f 55 54 5f 46 49 4c 45 4e 4f 29 3b 20 20 20 | env..Dup2(fd,.STDOUT_FILENO);... |
| ace0 | 20 20 20 20 20 20 2f 2a 20 52 65 64 69 72 65 63 74 20 73 74 64 6f 75 74 20 74 6f 20 63 6c 69 65 | ....../*.Redirect.stdout.to.clie |
| ad00 | 6e 74 20 2a 2f 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 73 65 72 76 65 64 79 6e 61 6d 69 63 3a 64 | nt.*/.//line:netp:servedynamic:d |
| ad20 | 75 70 32 0a 09 45 78 65 63 76 65 28 66 69 6c 65 6e 61 6d 65 2c 20 65 6d 70 74 79 6c 69 73 74 2c | up2..Execve(filename,.emptylist, |
| ad40 | 20 65 6e 76 69 72 6f 6e 29 3b 20 2f 2a 20 52 75 6e 20 43 47 49 20 70 72 6f 67 72 61 6d 20 2a 2f | .environ);./*.Run.CGI.program.*/ |
| ad60 | 20 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 73 65 72 76 65 64 79 6e 61 6d 69 63 3a 65 78 65 63 76 65 | .//line:netp:servedynamic:execve |
| ad80 | 0a 20 20 20 20 7d 0a 20 20 20 20 57 61 69 74 28 4e 55 4c 4c 29 3b 20 2f 2a 20 50 61 72 65 6e 74 | .....}.....Wait(NULL);./*.Parent |
| ada0 | 20 77 61 69 74 73 20 66 6f 72 20 61 6e 64 20 72 65 61 70 73 20 63 68 69 6c 64 20 2a 2f 20 2f 2f | .waits.for.and.reaps.child.*/.// |
| adc0 | 6c 69 6e 65 3a 6e 65 74 70 3a 73 65 72 76 65 64 79 6e 61 6d 69 63 3a 77 61 69 74 0a 7d 0a 2f 2a | line:netp:servedynamic:wait.}./* |
| ade0 | 20 24 65 6e 64 20 73 65 72 76 65 5f 64 79 6e 61 6d 69 63 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 63 6c | .$end.serve_dynamic.*/../*..*.cl |
| ae00 | 69 65 6e 74 65 72 72 6f 72 20 2d 20 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 | ienterror.-.returns.an.error.mes |
| ae20 | 73 61 67 65 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e | sage.to.the.client..*/./*.$begin |
| ae40 | 20 63 6c 69 65 6e 74 65 72 72 6f 72 20 2a 2f 0a 76 6f 69 64 20 63 6c 69 65 6e 74 65 72 72 6f 72 | .clienterror.*/.void.clienterror |
| ae60 | 28 69 6e 74 20 66 64 2c 20 63 68 61 72 20 2a 63 61 75 73 65 2c 20 63 68 61 72 20 2a 65 72 72 6e | (int.fd,.char.*cause,.char.*errn |
| ae80 | 75 6d 2c 20 0a 09 09 20 63 68 61 72 20 2a 73 68 6f 72 74 6d 73 67 2c 20 63 68 61 72 20 2a 6c 6f | um,.....char.*shortmsg,.char.*lo |
| aea0 | 6e 67 6d 73 67 29 20 0a 7b 0a 20 20 20 20 63 68 61 72 20 62 75 66 5b 4d 41 58 4c 49 4e 45 5d 3b | ngmsg)..{.....char.buf[MAXLINE]; |
| aec0 | 0a 0a 20 20 20 20 2f 2a 20 50 72 69 6e 74 20 74 68 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 | ....../*.Print.the.HTTP.response |
| aee0 | 20 68 65 61 64 65 72 73 20 2a 2f 0a 20 20 20 20 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 48 54 | .headers.*/.....sprintf(buf,."HT |
| af00 | 54 50 2f 31 2e 30 20 25 73 20 25 73 5c 72 5c 6e 22 2c 20 65 72 72 6e 75 6d 2c 20 73 68 6f 72 74 | TP/1.0.%s.%s\r\n",.errnum,.short |
| af20 | 6d 73 67 29 3b 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c 20 62 75 66 2c 20 73 74 | msg);.....Rio_writen(fd,.buf,.st |
| af40 | 72 6c 65 6e 28 62 75 66 29 29 3b 0a 20 20 20 20 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 43 6f | rlen(buf));.....sprintf(buf,."Co |
| af60 | 6e 74 65 6e 74 2d 74 79 70 65 3a 20 74 65 78 74 2f 68 74 6d 6c 5c 72 5c 6e 5c 72 5c 6e 22 29 3b | ntent-type:.text/html\r\n\r\n"); |
| af80 | 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c 20 62 75 66 2c 20 73 74 72 6c 65 6e 28 | .....Rio_writen(fd,.buf,.strlen( |
| afa0 | 62 75 66 29 29 3b 0a 0a 20 20 20 20 2f 2a 20 50 72 69 6e 74 20 74 68 65 20 48 54 54 50 20 72 65 | buf));....../*.Print.the.HTTP.re |
| afc0 | 73 70 6f 6e 73 65 20 62 6f 64 79 20 2a 2f 0a 20 20 20 20 73 70 72 69 6e 74 66 28 62 75 66 2c 20 | sponse.body.*/.....sprintf(buf,. |
| afe0 | 22 3c 68 74 6d 6c 3e 3c 74 69 74 6c 65 3e 54 69 6e 79 20 45 72 72 6f 72 3c 2f 74 69 74 6c 65 3e | "<html><title>Tiny.Error</title> |
| b000 | 22 29 3b 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c 20 62 75 66 2c 20 73 74 72 6c | ");.....Rio_writen(fd,.buf,.strl |
| b020 | 65 6e 28 62 75 66 29 29 3b 0a 20 20 20 20 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 3c 62 6f 64 | en(buf));.....sprintf(buf,."<bod |
| b040 | 79 20 62 67 63 6f 6c 6f 72 3d 22 22 66 66 66 66 66 66 22 22 3e 5c 72 5c 6e 22 29 3b 0a 20 20 20 | y.bgcolor=""ffffff"">\r\n");.... |
| b060 | 20 52 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c 20 62 75 66 2c 20 73 74 72 6c 65 6e 28 62 75 66 29 | .Rio_writen(fd,.buf,.strlen(buf) |
| b080 | 29 3b 0a 20 20 20 20 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 25 73 3a 20 25 73 5c 72 5c 6e 22 | );.....sprintf(buf,."%s:.%s\r\n" |
| b0a0 | 2c 20 65 72 72 6e 75 6d 2c 20 73 68 6f 72 74 6d 73 67 29 3b 0a 20 20 20 20 52 69 6f 5f 77 72 69 | ,.errnum,.shortmsg);.....Rio_wri |
| b0c0 | 74 65 6e 28 66 64 2c 20 62 75 66 2c 20 73 74 72 6c 65 6e 28 62 75 66 29 29 3b 0a 20 20 20 20 73 | ten(fd,.buf,.strlen(buf));.....s |
| b0e0 | 70 72 69 6e 74 66 28 62 75 66 2c 20 22 3c 70 3e 25 73 3a 20 25 73 5c 72 5c 6e 22 2c 20 6c 6f 6e | printf(buf,."<p>%s:.%s\r\n",.lon |
| b100 | 67 6d 73 67 2c 20 63 61 75 73 65 29 3b 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c | gmsg,.cause);.....Rio_writen(fd, |
| b120 | 20 62 75 66 2c 20 73 74 72 6c 65 6e 28 62 75 66 29 29 3b 0a 20 20 20 20 73 70 72 69 6e 74 66 28 | .buf,.strlen(buf));.....sprintf( |
| b140 | 62 75 66 2c 20 22 3c 68 72 3e 3c 65 6d 3e 54 68 65 20 54 69 6e 79 20 57 65 62 20 73 65 72 76 65 | buf,."<hr><em>The.Tiny.Web.serve |
| b160 | 72 3c 2f 65 6d 3e 5c 72 5c 6e 22 29 3b 0a 20 20 20 20 52 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c | r</em>\r\n");.....Rio_writen(fd, |
| b180 | 20 62 75 66 2c 20 73 74 72 6c 65 6e 28 62 75 66 29 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 63 6c | .buf,.strlen(buf));.}./*.$end.cl |
| b1a0 | 69 65 6e 74 65 72 72 6f 72 20 2a 2f 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ienterror.*/.................... |
| b1c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b1e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b200 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 63 73 61 70 70 2e 63 00 00 00 | proxylab-handout/tiny/csapp.c... |
| b220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| b280 | 30 30 35 36 37 34 33 00 31 33 35 36 33 33 31 30 30 32 36 00 30 31 34 36 33 36 00 20 30 00 00 00 | 0056743.13563310026.014636..0... |
| b2a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b2c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b2e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b300 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| b320 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| b340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b3a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b3c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b3e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b400 | 2f 2a 20 0a 20 2a 20 63 73 61 70 70 2e 63 20 2d 20 46 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 74 | /*...*.csapp.c.-.Functions.for.t |
| b420 | 68 65 20 43 53 3a 41 50 50 33 65 20 62 6f 6f 6b 0a 20 2a 0a 20 2a 20 55 70 64 61 74 65 64 20 31 | he.CS:APP3e.book..*..*.Updated.1 |
| b440 | 30 2f 32 30 31 36 20 72 65 62 3a 0a 20 2a 20 20 20 2d 20 46 69 78 65 64 20 62 75 67 20 69 6e 20 | 0/2016.reb:..*...-.Fixed.bug.in. |
| b460 | 73 69 6f 5f 6c 74 6f 61 20 74 68 61 74 20 64 69 64 6e 27 74 20 63 6f 76 65 72 20 6e 65 67 61 74 | sio_ltoa.that.didn't.cover.negat |
| b480 | 69 76 65 20 6e 75 6d 62 65 72 73 0a 20 2a 0a 20 2a 20 55 70 64 61 74 65 64 20 32 2f 32 30 31 36 | ive.numbers..*..*.Updated.2/2016 |
| b4a0 | 20 64 72 6f 68 3a 0a 20 2a 20 20 20 2d 20 55 70 64 61 74 65 64 20 6f 70 65 6e 5f 63 6c 69 65 6e | .droh:..*...-.Updated.open_clien |
| b4c0 | 74 66 64 20 61 6e 64 20 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 74 6f 20 66 61 69 6c 20 6d 6f | tfd.and.open_listenfd.to.fail.mo |
| b4e0 | 72 65 20 67 72 61 63 65 66 75 6c 6c 79 0a 20 2a 0a 20 2a 20 55 70 64 61 74 65 64 20 38 2f 32 30 | re.gracefully..*..*.Updated.8/20 |
| b500 | 31 34 20 64 72 6f 68 3a 20 0a 20 2a 20 20 20 2d 20 4e 65 77 20 76 65 72 73 69 6f 6e 73 20 6f 66 | 14.droh:...*...-.New.versions.of |
| b520 | 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 20 61 6e 64 20 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 | .open_clientfd.and.open_listenfd |
| b540 | 20 61 72 65 20 72 65 65 6e 74 72 61 6e 74 20 61 6e 64 0a 20 2a 20 20 20 20 20 70 72 6f 74 6f 63 | .are.reentrant.and..*.....protoc |
| b560 | 6f 6c 20 69 6e 64 65 70 65 6e 64 65 6e 74 2e 0a 20 2a 0a 20 2a 20 20 20 2d 20 41 64 64 65 64 20 | ol.independent...*..*...-.Added. |
| b580 | 70 72 6f 74 6f 63 6f 6c 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 69 6e 65 74 5f 6e 74 6f 70 20 61 | protocol-independent.inet_ntop.a |
| b5a0 | 6e 64 20 69 6e 65 74 5f 70 74 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 2e 20 54 68 65 0a 20 2a 20 20 | nd.inet_pton.functions..The..*.. |
| b5c0 | 20 20 20 69 6e 65 74 5f 6e 74 6f 61 20 61 6e 64 20 69 6e 65 74 5f 61 74 6f 6e 20 66 75 6e 63 74 | ...inet_ntoa.and.inet_aton.funct |
| b5e0 | 69 6f 6e 73 20 61 72 65 20 6f 62 73 6f 6c 65 74 65 2e 0a 20 2a 0a 20 2a 20 55 70 64 61 74 65 64 | ions.are.obsolete...*..*.Updated |
| b600 | 20 37 2f 32 30 31 34 20 64 72 6f 68 3a 0a 20 2a 20 20 20 2d 20 41 64 65 64 20 72 65 65 6e 74 72 | .7/2014.droh:..*...-.Aded.reentr |
| b620 | 61 6e 74 20 73 69 6f 20 28 73 69 67 6e 61 6c 2d 73 61 66 65 20 49 2f 4f 29 20 72 6f 75 74 69 6e | ant.sio.(signal-safe.I/O).routin |
| b640 | 65 73 0a 20 2a 20 0a 20 2a 20 55 70 64 61 74 65 64 20 34 2f 32 30 31 33 20 64 72 6f 68 3a 20 0a | es..*...*.Updated.4/2013.droh:.. |
| b660 | 20 2a 20 20 20 2d 20 72 69 6f 5f 72 65 61 64 6c 69 6e 65 62 3a 20 66 69 78 65 64 20 65 64 67 65 | .*...-.rio_readlineb:.fixed.edge |
| b680 | 20 63 61 73 65 20 62 75 67 0a 20 2a 20 20 20 2d 20 72 69 6f 5f 72 65 61 64 6e 62 3a 20 72 65 6d | .case.bug..*...-.rio_readnb:.rem |
| b6a0 | 6f 76 65 64 20 72 65 64 75 6e 64 61 6e 74 20 45 49 4e 54 52 20 63 68 65 63 6b 0a 20 2a 2f 0a 2f | oved.redundant.EINTR.check..*/./ |
| b6c0 | 2a 20 24 62 65 67 69 6e 20 63 73 61 70 70 2e 63 20 2a 2f 0a 23 69 6e 63 6c 75 64 65 20 22 63 73 | *.$begin.csapp.c.*/.#include."cs |
| b6e0 | 61 70 70 2e 68 22 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | app.h"../*********************** |
| b700 | 2a 2a 2a 20 0a 20 2a 20 45 72 72 6f 72 2d 68 61 6e 64 6c 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 | ***...*.Error-handling.functions |
| b720 | 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a | ..**************************/./* |
| b740 | 20 24 62 65 67 69 6e 20 65 72 72 6f 72 66 75 6e 73 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 75 | .$begin.errorfuns.*/./*.$begin.u |
| b760 | 6e 69 78 65 72 72 6f 72 20 2a 2f 0a 76 6f 69 64 20 75 6e 69 78 5f 65 72 72 6f 72 28 63 68 61 72 | nixerror.*/.void.unix_error(char |
| b780 | 20 2a 6d 73 67 29 20 2f 2a 20 55 6e 69 78 2d 73 74 79 6c 65 20 65 72 72 6f 72 20 2a 2f 0a 7b 0a | .*msg)./*.Unix-style.error.*/.{. |
| b7a0 | 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 25 73 3a 20 25 73 5c 6e 22 2c 20 | ....fprintf(stderr,."%s:.%s\n",. |
| b7c0 | 6d 73 67 2c 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 0a 20 20 20 20 65 78 69 74 28 | msg,.strerror(errno));.....exit( |
| b7e0 | 30 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 75 6e 69 78 65 72 72 6f 72 20 2a 2f 0a 0a 76 6f 69 64 | 0);.}./*.$end.unixerror.*/..void |
| b800 | 20 70 6f 73 69 78 5f 65 72 72 6f 72 28 69 6e 74 20 63 6f 64 65 2c 20 63 68 61 72 20 2a 6d 73 67 | .posix_error(int.code,.char.*msg |
| b820 | 29 20 2f 2a 20 50 6f 73 69 78 2d 73 74 79 6c 65 20 65 72 72 6f 72 20 2a 2f 0a 7b 0a 20 20 20 20 | )./*.Posix-style.error.*/.{..... |
| b840 | 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 25 73 3a 20 25 73 5c 6e 22 2c 20 6d 73 67 2c | fprintf(stderr,."%s:.%s\n",.msg, |
| b860 | 20 73 74 72 65 72 72 6f 72 28 63 6f 64 65 29 29 3b 0a 20 20 20 20 65 78 69 74 28 30 29 3b 0a 7d | .strerror(code));.....exit(0);.} |
| b880 | 0a 0a 76 6f 69 64 20 67 61 69 5f 65 72 72 6f 72 28 69 6e 74 20 63 6f 64 65 2c 20 63 68 61 72 20 | ..void.gai_error(int.code,.char. |
| b8a0 | 2a 6d 73 67 29 20 2f 2a 20 47 65 74 61 64 64 72 69 6e 66 6f 2d 73 74 79 6c 65 20 65 72 72 6f 72 | *msg)./*.Getaddrinfo-style.error |
| b8c0 | 20 2a 2f 0a 7b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 25 73 3a 20 25 | .*/.{.....fprintf(stderr,."%s:.% |
| b8e0 | 73 5c 6e 22 2c 20 6d 73 67 2c 20 67 61 69 5f 73 74 72 65 72 72 6f 72 28 63 6f 64 65 29 29 3b 0a | s\n",.msg,.gai_strerror(code));. |
| b900 | 20 20 20 20 65 78 69 74 28 30 29 3b 0a 7d 0a 0a 76 6f 69 64 20 61 70 70 5f 65 72 72 6f 72 28 63 | ....exit(0);.}..void.app_error(c |
| b920 | 68 61 72 20 2a 6d 73 67 29 20 2f 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 65 72 72 6f 72 20 2a | har.*msg)./*.Application.error.* |
| b940 | 2f 0a 7b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 25 73 5c 6e 22 2c 20 | /.{.....fprintf(stderr,."%s\n",. |
| b960 | 6d 73 67 29 3b 0a 20 20 20 20 65 78 69 74 28 30 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 65 72 72 | msg);.....exit(0);.}./*.$end.err |
| b980 | 6f 72 66 75 6e 73 20 2a 2f 0a 0a 76 6f 69 64 20 64 6e 73 5f 65 72 72 6f 72 28 63 68 61 72 20 2a | orfuns.*/..void.dns_error(char.* |
| b9a0 | 6d 73 67 29 20 2f 2a 20 4f 62 73 6f 6c 65 74 65 20 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 20 65 | msg)./*.Obsolete.gethostbyname.e |
| b9c0 | 72 72 6f 72 20 2a 2f 0a 7b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 25 | rror.*/.{.....fprintf(stderr,."% |
| b9e0 | 73 5c 6e 22 2c 20 6d 73 67 29 3b 0a 20 20 20 20 65 78 69 74 28 30 29 3b 0a 7d 0a 0a 0a 2f 2a 2a | s\n",.msg);.....exit(0);.}.../** |
| ba00 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| ba20 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 55 6e 69 78 | ***********..*.Wrappers.for.Unix |
| ba40 | 20 70 72 6f 63 65 73 73 20 63 6f 6e 74 72 6f 6c 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 2a 2a 2a | .process.control.functions..**** |
| ba60 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| ba80 | 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 24 62 65 67 69 6e 20 66 6f 72 6b 77 72 61 70 70 65 72 | ********/../*.$begin.forkwrapper |
| baa0 | 20 2a 2f 0a 70 69 64 5f 74 20 46 6f 72 6b 28 76 6f 69 64 29 20 0a 7b 0a 20 20 20 20 70 69 64 5f | .*/.pid_t.Fork(void)..{.....pid_ |
| bac0 | 74 20 70 69 64 3b 0a 0a 20 20 20 20 69 66 20 28 28 70 69 64 20 3d 20 66 6f 72 6b 28 29 29 20 3c | t.pid;......if.((pid.=.fork()).< |
| bae0 | 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 46 6f 72 6b 20 65 72 72 6f 72 22 29 3b 0a 20 | .0)..unix_error("Fork.error");.. |
| bb00 | 20 20 20 72 65 74 75 72 6e 20 70 69 64 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 66 6f 72 6b 77 72 61 | ...return.pid;.}./*.$end.forkwra |
| bb20 | 70 70 65 72 20 2a 2f 0a 0a 76 6f 69 64 20 45 78 65 63 76 65 28 63 6f 6e 73 74 20 63 68 61 72 20 | pper.*/..void.Execve(const.char. |
| bb40 | 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 68 61 72 20 2a 63 6f 6e 73 74 20 61 72 67 76 5b 5d 2c 20 63 | *filename,.char.*const.argv[],.c |
| bb60 | 68 61 72 20 2a 63 6f 6e 73 74 20 65 6e 76 70 5b 5d 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 65 78 | har.*const.envp[])..{.....if.(ex |
| bb80 | 65 63 76 65 28 66 69 6c 65 6e 61 6d 65 2c 20 61 72 67 76 2c 20 65 6e 76 70 29 20 3c 20 30 29 0a | ecve(filename,.argv,.envp).<.0). |
| bba0 | 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 45 78 65 63 76 65 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a | .unix_error("Execve.error");.}.. |
| bbc0 | 2f 2a 20 24 62 65 67 69 6e 20 77 61 69 74 20 2a 2f 0a 70 69 64 5f 74 20 57 61 69 74 28 69 6e 74 | /*.$begin.wait.*/.pid_t.Wait(int |
| bbe0 | 20 2a 73 74 61 74 75 73 29 20 0a 7b 0a 20 20 20 20 70 69 64 5f 74 20 70 69 64 3b 0a 0a 20 20 20 | .*status)..{.....pid_t.pid;..... |
| bc00 | 20 69 66 20 28 28 70 69 64 20 20 3d 20 77 61 69 74 28 73 74 61 74 75 73 29 29 20 3c 20 30 29 0a | .if.((pid..=.wait(status)).<.0). |
| bc20 | 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 57 61 69 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 | .unix_error("Wait.error");.....r |
| bc40 | 65 74 75 72 6e 20 70 69 64 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 77 61 69 74 20 2a 2f 0a 0a 70 69 | eturn.pid;.}./*.$end.wait.*/..pi |
| bc60 | 64 5f 74 20 57 61 69 74 70 69 64 28 70 69 64 5f 74 20 70 69 64 2c 20 69 6e 74 20 2a 69 70 74 72 | d_t.Waitpid(pid_t.pid,.int.*iptr |
| bc80 | 2c 20 69 6e 74 20 6f 70 74 69 6f 6e 73 29 20 0a 7b 0a 20 20 20 20 70 69 64 5f 74 20 72 65 74 70 | ,.int.options)..{.....pid_t.retp |
| bca0 | 69 64 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 65 74 70 69 64 20 20 3d 20 77 61 69 74 70 69 64 28 | id;......if.((retpid..=.waitpid( |
| bcc0 | 70 69 64 2c 20 69 70 74 72 2c 20 6f 70 74 69 6f 6e 73 29 29 20 3c 20 30 29 20 0a 09 75 6e 69 78 | pid,.iptr,.options)).<.0)...unix |
| bce0 | 5f 65 72 72 6f 72 28 22 57 61 69 74 70 69 64 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 | _error("Waitpid.error");.....ret |
| bd00 | 75 72 6e 28 72 65 74 70 69 64 29 3b 0a 7d 0a 0a 2f 2a 20 24 62 65 67 69 6e 20 6b 69 6c 6c 20 2a | urn(retpid);.}../*.$begin.kill.* |
| bd20 | 2f 0a 76 6f 69 64 20 4b 69 6c 6c 28 70 69 64 5f 74 20 70 69 64 2c 20 69 6e 74 20 73 69 67 6e 75 | /.void.Kill(pid_t.pid,.int.signu |
| bd40 | 6d 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d | m)..{.....int.rc;......if.((rc.= |
| bd60 | 20 6b 69 6c 6c 28 70 69 64 2c 20 73 69 67 6e 75 6d 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 | .kill(pid,.signum)).<.0)..unix_e |
| bd80 | 72 72 6f 72 28 22 4b 69 6c 6c 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 6b 69 | rror("Kill.error");.}./*.$end.ki |
| bda0 | 6c 6c 20 2a 2f 0a 0a 76 6f 69 64 20 50 61 75 73 65 28 29 20 0a 7b 0a 20 20 20 20 28 76 6f 69 64 | ll.*/..void.Pause()..{.....(void |
| bdc0 | 29 70 61 75 73 65 28 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 75 6e 73 69 67 6e 65 | )pause();.....return;.}..unsigne |
| bde0 | 64 20 69 6e 74 20 53 6c 65 65 70 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 73 65 63 73 29 20 0a | d.int.Sleep(unsigned.int.secs).. |
| be00 | 7b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 | {.....unsigned.int.rc;......if.( |
| be20 | 28 72 63 20 3d 20 73 6c 65 65 70 28 73 65 63 73 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 | (rc.=.sleep(secs)).<.0)..unix_er |
| be40 | 72 6f 72 28 22 53 6c 65 65 70 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 | ror("Sleep.error");.....return.r |
| be60 | 63 3b 0a 7d 0a 0a 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 41 6c 61 72 6d 28 75 6e 73 69 67 6e 65 | c;.}..unsigned.int.Alarm(unsigne |
| be80 | 64 20 69 6e 74 20 73 65 63 6f 6e 64 73 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 61 6c 61 72 | d.int.seconds).{.....return.alar |
| bea0 | 6d 28 73 65 63 6f 6e 64 73 29 3b 0a 7d 0a 20 0a 76 6f 69 64 20 53 65 74 70 67 69 64 28 70 69 64 | m(seconds);.}...void.Setpgid(pid |
| bec0 | 5f 74 20 70 69 64 2c 20 70 69 64 5f 74 20 70 67 69 64 29 20 7b 0a 20 20 20 20 69 6e 74 20 72 63 | _t.pid,.pid_t.pgid).{.....int.rc |
| bee0 | 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 73 65 74 70 67 69 64 28 70 69 64 2c 20 70 67 | ;......if.((rc.=.setpgid(pid,.pg |
| bf00 | 69 64 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 65 74 70 67 69 64 20 65 | id)).<.0)..unix_error("Setpgid.e |
| bf20 | 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 70 69 64 5f 74 20 47 65 74 | rror");.....return;.}..pid_t.Get |
| bf40 | 70 67 72 70 28 76 6f 69 64 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 70 67 72 70 28 | pgrp(void).{.....return.getpgrp( |
| bf60 | 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | );.}../************************* |
| bf80 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 55 6e 69 78 | ***********..*.Wrappers.for.Unix |
| bfa0 | 20 73 69 67 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 73 20 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .signal.functions...************ |
| bfc0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 24 62 65 | ***********************/../*.$be |
| bfe0 | 67 69 6e 20 73 69 67 61 63 74 69 6f 6e 20 2a 2f 0a 68 61 6e 64 6c 65 72 5f 74 20 2a 53 69 67 6e | gin.sigaction.*/.handler_t.*Sign |
| c000 | 61 6c 28 69 6e 74 20 73 69 67 6e 75 6d 2c 20 68 61 6e 64 6c 65 72 5f 74 20 2a 68 61 6e 64 6c 65 | al(int.signum,.handler_t.*handle |
| c020 | 72 29 20 0a 7b 0a 20 20 20 20 73 74 72 75 63 74 20 73 69 67 61 63 74 69 6f 6e 20 61 63 74 69 6f | r)..{.....struct.sigaction.actio |
| c040 | 6e 2c 20 6f 6c 64 5f 61 63 74 69 6f 6e 3b 0a 0a 20 20 20 20 61 63 74 69 6f 6e 2e 73 61 5f 68 61 | n,.old_action;......action.sa_ha |
| c060 | 6e 64 6c 65 72 20 3d 20 68 61 6e 64 6c 65 72 3b 20 20 0a 20 20 20 20 73 69 67 65 6d 70 74 79 73 | ndler.=.handler;.......sigemptys |
| c080 | 65 74 28 26 61 63 74 69 6f 6e 2e 73 61 5f 6d 61 73 6b 29 3b 20 2f 2a 20 42 6c 6f 63 6b 20 73 69 | et(&action.sa_mask);./*.Block.si |
| c0a0 | 67 73 20 6f 66 20 74 79 70 65 20 62 65 69 6e 67 20 68 61 6e 64 6c 65 64 20 2a 2f 0a 20 20 20 20 | gs.of.type.being.handled.*/..... |
| c0c0 | 61 63 74 69 6f 6e 2e 73 61 5f 66 6c 61 67 73 20 3d 20 53 41 5f 52 45 53 54 41 52 54 3b 20 2f 2a | action.sa_flags.=.SA_RESTART;./* |
| c0e0 | 20 52 65 73 74 61 72 74 20 73 79 73 63 61 6c 6c 73 20 69 66 20 70 6f 73 73 69 62 6c 65 20 2a 2f | .Restart.syscalls.if.possible.*/ |
| c100 | 0a 0a 20 20 20 20 69 66 20 28 73 69 67 61 63 74 69 6f 6e 28 73 69 67 6e 75 6d 2c 20 26 61 63 74 | ......if.(sigaction(signum,.&act |
| c120 | 69 6f 6e 2c 20 26 6f 6c 64 5f 61 63 74 69 6f 6e 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 | ion,.&old_action).<.0)..unix_err |
| c140 | 6f 72 28 22 53 69 67 6e 61 6c 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 28 | or("Signal.error");.....return.( |
| c160 | 6f 6c 64 5f 61 63 74 69 6f 6e 2e 73 61 5f 68 61 6e 64 6c 65 72 29 3b 0a 7d 0a 2f 2a 20 24 65 6e | old_action.sa_handler);.}./*.$en |
| c180 | 64 20 73 69 67 61 63 74 69 6f 6e 20 2a 2f 0a 0a 76 6f 69 64 20 53 69 67 70 72 6f 63 6d 61 73 6b | d.sigaction.*/..void.Sigprocmask |
| c1a0 | 28 69 6e 74 20 68 6f 77 2c 20 63 6f 6e 73 74 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 73 | (int.how,.const.sigset_t.*set,.s |
| c1c0 | 69 67 73 65 74 5f 74 20 2a 6f 6c 64 73 65 74 29 0a 7b 0a 20 20 20 20 69 66 20 28 73 69 67 70 72 | igset_t.*oldset).{.....if.(sigpr |
| c1e0 | 6f 63 6d 61 73 6b 28 68 6f 77 2c 20 73 65 74 2c 20 6f 6c 64 73 65 74 29 20 3c 20 30 29 0a 09 75 | ocmask(how,.set,.oldset).<.0)..u |
| c200 | 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 70 72 6f 63 6d 61 73 6b 20 65 72 72 6f 72 22 29 3b 0a | nix_error("Sigprocmask.error");. |
| c220 | 20 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 76 6f 69 64 20 53 69 67 65 6d 70 74 79 73 65 74 28 | ....return;.}..void.Sigemptyset( |
| c240 | 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 0a 7b 0a 20 20 20 20 69 66 20 28 73 69 67 65 6d 70 74 | sigset_t.*set).{.....if.(sigempt |
| c260 | 79 73 65 74 28 73 65 74 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 65 | yset(set).<.0)..unix_error("Sige |
| c280 | 6d 70 74 79 73 65 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a | mptyset.error");.....return;.}.. |
| c2a0 | 76 6f 69 64 20 53 69 67 66 69 6c 6c 73 65 74 28 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 0a 7b | void.Sigfillset(sigset_t.*set).{ |
| c2c0 | 20 0a 20 20 20 20 69 66 20 28 73 69 67 66 69 6c 6c 73 65 74 28 73 65 74 29 20 3c 20 30 29 0a 09 | ......if.(sigfillset(set).<.0).. |
| c2e0 | 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 66 69 6c 6c 73 65 74 20 65 72 72 6f 72 22 29 3b 0a | unix_error("Sigfillset.error");. |
| c300 | 20 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 76 6f 69 64 20 53 69 67 61 64 64 73 65 74 28 73 69 | ....return;.}..void.Sigaddset(si |
| c320 | 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 0a 7b 0a 20 20 20 20 69 | gset_t.*set,.int.signum).{.....i |
| c340 | 66 20 28 73 69 67 61 64 64 73 65 74 28 73 65 74 2c 20 73 69 67 6e 75 6d 29 20 3c 20 30 29 0a 09 | f.(sigaddset(set,.signum).<.0).. |
| c360 | 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 61 64 64 73 65 74 20 65 72 72 6f 72 22 29 3b 0a 20 | unix_error("Sigaddset.error");.. |
| c380 | 20 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 76 6f 69 64 20 53 69 67 64 65 6c 73 65 74 28 73 69 67 | ...return;.}..void.Sigdelset(sig |
| c3a0 | 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 0a 7b 0a 20 20 20 20 69 66 | set_t.*set,.int.signum).{.....if |
| c3c0 | 20 28 73 69 67 64 65 6c 73 65 74 28 73 65 74 2c 20 73 69 67 6e 75 6d 29 20 3c 20 30 29 0a 09 75 | .(sigdelset(set,.signum).<.0)..u |
| c3e0 | 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 64 65 6c 73 65 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 | nix_error("Sigdelset.error");... |
| c400 | 20 20 72 65 74 75 72 6e 3b 0a 7d 0a 0a 69 6e 74 20 53 69 67 69 73 6d 65 6d 62 65 72 28 63 6f 6e | ..return;.}..int.Sigismember(con |
| c420 | 73 74 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 0a 7b 0a | st.sigset_t.*set,.int.signum).{. |
| c440 | 20 20 20 20 69 6e 74 20 72 63 3b 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 73 69 67 69 73 6d | ....int.rc;.....if.((rc.=.sigism |
| c460 | 65 6d 62 65 72 28 73 65 74 2c 20 73 69 67 6e 75 6d 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 | ember(set,.signum)).<.0)..unix_e |
| c480 | 72 72 6f 72 28 22 53 69 67 69 73 6d 65 6d 62 65 72 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 | rror("Sigismember.error");.....r |
| c4a0 | 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 69 6e 74 20 53 69 67 73 75 73 70 65 6e 64 28 63 6f 6e 73 | eturn.rc;.}..int.Sigsuspend(cons |
| c4c0 | 74 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 20 3d 20 | t.sigset_t.*set).{.....int.rc.=. |
| c4e0 | 73 69 67 73 75 73 70 65 6e 64 28 73 65 74 29 3b 20 2f 2a 20 61 6c 77 61 79 73 20 72 65 74 75 72 | sigsuspend(set);./*.always.retur |
| c500 | 6e 73 20 2d 31 20 2a 2f 0a 20 20 20 20 69 66 20 28 65 72 72 6e 6f 20 21 3d 20 45 49 4e 54 52 29 | ns.-1.*/.....if.(errno.!=.EINTR) |
| c520 | 0a 20 20 20 20 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 69 67 73 75 73 70 65 6e 64 20 | .........unix_error("Sigsuspend. |
| c540 | 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a | error");.....return.rc;.}../**** |
| c560 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| c580 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 54 68 65 | *************************..*.The |
| c5a0 | 20 53 69 6f 20 28 53 69 67 6e 61 6c 2d 73 61 66 65 20 49 2f 4f 29 20 70 61 63 6b 61 67 65 20 2d | .Sio.(Signal-safe.I/O).package.- |
| c5c0 | 20 73 69 6d 70 6c 65 20 72 65 65 6e 74 72 61 6e 74 20 6f 75 74 70 75 74 0a 20 2a 20 66 75 6e 63 | .simple.reentrant.output..*.func |
| c5e0 | 74 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 73 61 66 65 20 66 6f 72 20 73 69 67 6e 61 6c 20 68 | tions.that.are.safe.for.signal.h |
| c600 | 61 6e 64 6c 65 72 73 2e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | andlers...********************** |
| c620 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| c640 | 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 50 72 69 76 61 74 65 20 73 69 6f 20 66 75 6e 63 74 69 6f | *******/../*.Private.sio.functio |
| c660 | 6e 73 20 2a 2f 0a 0a 2f 2a 20 24 62 65 67 69 6e 20 73 69 6f 70 72 69 76 61 74 65 20 2a 2f 0a 2f | ns.*/../*.$begin.sioprivate.*/./ |
| c680 | 2a 20 73 69 6f 5f 72 65 76 65 72 73 65 20 2d 20 52 65 76 65 72 73 65 20 61 20 73 74 72 69 6e 67 | *.sio_reverse.-.Reverse.a.string |
| c6a0 | 20 28 66 72 6f 6d 20 4b 26 52 29 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 20 73 69 6f 5f 72 | .(from.K&R).*/.static.void.sio_r |
| c6c0 | 65 76 65 72 73 65 28 63 68 61 72 20 73 5b 5d 29 0a 7b 0a 20 20 20 20 69 6e 74 20 63 2c 20 69 2c | everse(char.s[]).{.....int.c,.i, |
| c6e0 | 20 6a 3b 0a 0a 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 2c 20 6a 20 3d 20 73 74 72 6c 65 6e 28 | .j;......for.(i.=.0,.j.=.strlen( |
| c700 | 73 29 2d 31 3b 20 69 20 3c 20 6a 3b 20 69 2b 2b 2c 20 6a 2d 2d 29 20 7b 0a 20 20 20 20 20 20 20 | s)-1;.i.<.j;.i++,.j--).{........ |
| c720 | 20 63 20 3d 20 73 5b 69 5d 3b 0a 20 20 20 20 20 20 20 20 73 5b 69 5d 20 3d 20 73 5b 6a 5d 3b 0a | .c.=.s[i];.........s[i].=.s[j];. |
| c740 | 20 20 20 20 20 20 20 20 73 5b 6a 5d 20 3d 20 63 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 2f 2a 20 73 69 | ........s[j].=.c;.....}.}../*.si |
| c760 | 6f 5f 6c 74 6f 61 20 2d 20 43 6f 6e 76 65 72 74 20 6c 6f 6e 67 20 74 6f 20 62 61 73 65 20 62 20 | o_ltoa.-.Convert.long.to.base.b. |
| c780 | 73 74 72 69 6e 67 20 28 66 72 6f 6d 20 4b 26 52 29 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 | string.(from.K&R).*/.static.void |
| c7a0 | 20 73 69 6f 5f 6c 74 6f 61 28 6c 6f 6e 67 20 76 2c 20 63 68 61 72 20 73 5b 5d 2c 20 69 6e 74 20 | .sio_ltoa(long.v,.char.s[],.int. |
| c7c0 | 62 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 63 2c 20 69 20 3d 20 30 3b 0a 20 20 20 20 69 6e 74 20 | b)..{.....int.c,.i.=.0;.....int. |
| c7e0 | 6e 65 67 20 3d 20 76 20 3c 20 30 3b 0a 0a 20 20 20 20 69 66 20 28 6e 65 67 29 0a 09 76 20 3d 20 | neg.=.v.<.0;......if.(neg)..v.=. |
| c800 | 2d 76 3b 0a 0a 20 20 20 20 64 6f 20 7b 20 20 0a 20 20 20 20 20 20 20 20 73 5b 69 2b 2b 5d 20 3d | -v;......do.{...........s[i++].= |
| c820 | 20 28 28 63 20 3d 20 28 76 20 25 20 62 29 29 20 3c 20 31 30 29 20 20 3f 20 20 63 20 2b 20 27 30 | .((c.=.(v.%.b)).<.10)..?..c.+.'0 |
| c840 | 27 20 3a 20 63 20 2d 20 31 30 20 2b 20 27 61 27 3b 0a 20 20 20 20 7d 20 77 68 69 6c 65 20 28 28 | '.:.c.-.10.+.'a';.....}.while.(( |
| c860 | 76 20 2f 3d 20 62 29 20 3e 20 30 29 3b 0a 0a 20 20 20 20 69 66 20 28 6e 65 67 29 0a 09 73 5b 69 | v./=.b).>.0);......if.(neg)..s[i |
| c880 | 2b 2b 5d 20 3d 20 27 2d 27 3b 0a 0a 20 20 20 20 73 5b 69 5d 20 3d 20 27 5c 30 27 3b 0a 20 20 20 | ++].=.'-';......s[i].=.'\0';.... |
| c8a0 | 20 73 69 6f 5f 72 65 76 65 72 73 65 28 73 29 3b 0a 7d 0a 0a 2f 2a 20 73 69 6f 5f 73 74 72 6c 65 | .sio_reverse(s);.}../*.sio_strle |
| c8c0 | 6e 20 2d 20 52 65 74 75 72 6e 20 6c 65 6e 67 74 68 20 6f 66 20 73 74 72 69 6e 67 20 28 66 72 6f | n.-.Return.length.of.string.(fro |
| c8e0 | 6d 20 4b 26 52 29 20 2a 2f 0a 73 74 61 74 69 63 20 73 69 7a 65 5f 74 20 73 69 6f 5f 73 74 72 6c | m.K&R).*/.static.size_t.sio_strl |
| c900 | 65 6e 28 63 68 61 72 20 73 5b 5d 29 0a 7b 0a 20 20 20 20 69 6e 74 20 69 20 3d 20 30 3b 0a 0a 20 | en(char.s[]).{.....int.i.=.0;... |
| c920 | 20 20 20 77 68 69 6c 65 20 28 73 5b 69 5d 20 21 3d 20 27 5c 30 27 29 0a 20 20 20 20 20 20 20 20 | ...while.(s[i].!=.'\0')......... |
| c940 | 2b 2b 69 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 69 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 73 69 6f | ++i;.....return.i;.}./*.$end.sio |
| c960 | 70 72 69 76 61 74 65 20 2a 2f 0a 0a 2f 2a 20 50 75 62 6c 69 63 20 53 69 6f 20 66 75 6e 63 74 69 | private.*/../*.Public.Sio.functi |
| c980 | 6f 6e 73 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 73 69 6f 70 75 62 6c 69 63 20 2a 2f 0a 0a 73 | ons.*/./*.$begin.siopublic.*/..s |
| c9a0 | 73 69 7a 65 5f 74 20 73 69 6f 5f 70 75 74 73 28 63 68 61 72 20 73 5b 5d 29 20 2f 2a 20 50 75 74 | size_t.sio_puts(char.s[])./*.Put |
| c9c0 | 20 73 74 72 69 6e 67 20 2a 2f 0a 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 77 72 69 74 65 28 53 54 | .string.*/.{.....return.write(ST |
| c9e0 | 44 4f 55 54 5f 46 49 4c 45 4e 4f 2c 20 73 2c 20 73 69 6f 5f 73 74 72 6c 65 6e 28 73 29 29 3b 20 | DOUT_FILENO,.s,.sio_strlen(s));. |
| ca00 | 2f 2f 6c 69 6e 65 3a 63 73 61 70 70 3a 73 69 6f 73 74 72 6c 65 6e 0a 7d 0a 0a 73 73 69 7a 65 5f | //line:csapp:siostrlen.}..ssize_ |
| ca20 | 74 20 73 69 6f 5f 70 75 74 6c 28 6c 6f 6e 67 20 76 29 20 2f 2a 20 50 75 74 20 6c 6f 6e 67 20 2a | t.sio_putl(long.v)./*.Put.long.* |
| ca40 | 2f 0a 7b 0a 20 20 20 20 63 68 61 72 20 73 5b 31 32 38 5d 3b 0a 20 20 20 20 0a 20 20 20 20 73 69 | /.{.....char.s[128];..........si |
| ca60 | 6f 5f 6c 74 6f 61 28 76 2c 20 73 2c 20 31 30 29 3b 20 2f 2a 20 42 61 73 65 64 20 6f 6e 20 4b 26 | o_ltoa(v,.s,.10);./*.Based.on.K& |
| ca80 | 52 20 69 74 6f 61 28 29 20 2a 2f 20 20 2f 2f 6c 69 6e 65 3a 63 73 61 70 70 3a 73 69 6f 6c 74 6f | R.itoa().*/..//line:csapp:siolto |
| caa0 | 61 0a 20 20 20 20 72 65 74 75 72 6e 20 73 69 6f 5f 70 75 74 73 28 73 29 3b 0a 7d 0a 0a 76 6f 69 | a.....return.sio_puts(s);.}..voi |
| cac0 | 64 20 73 69 6f 5f 65 72 72 6f 72 28 63 68 61 72 20 73 5b 5d 29 20 2f 2a 20 50 75 74 20 65 72 72 | d.sio_error(char.s[])./*.Put.err |
| cae0 | 6f 72 20 6d 65 73 73 61 67 65 20 61 6e 64 20 65 78 69 74 20 2a 2f 0a 7b 0a 20 20 20 20 73 69 6f | or.message.and.exit.*/.{.....sio |
| cb00 | 5f 70 75 74 73 28 73 29 3b 0a 20 20 20 20 5f 65 78 69 74 28 31 29 3b 20 20 20 20 20 20 20 20 20 | _puts(s);....._exit(1);......... |
| cb20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c | .............................//l |
| cb40 | 69 6e 65 3a 63 73 61 70 70 3a 73 69 6f 65 78 69 74 0a 7d 0a 2f 2a 20 24 65 6e 64 20 73 69 6f 70 | ine:csapp:sioexit.}./*.$end.siop |
| cb60 | 75 62 6c 69 63 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ublic.*/../********************* |
| cb80 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 74 68 65 20 53 | **********..*.Wrappers.for.the.S |
| cba0 | 49 4f 20 72 6f 75 74 69 6e 65 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | IO.routines..******************* |
| cbc0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 73 73 69 7a 65 5f 74 20 53 69 6f 5f 70 75 74 6c 28 6c 6f | ***********/.ssize_t.Sio_putl(lo |
| cbe0 | 6e 67 20 76 29 0a 7b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 6e 3b 0a 20 20 0a 20 20 20 20 69 66 | ng.v).{.....ssize_t.n;........if |
| cc00 | 20 28 28 6e 20 3d 20 73 69 6f 5f 70 75 74 6c 28 76 29 29 20 3c 20 30 29 0a 09 73 69 6f 5f 65 72 | .((n.=.sio_putl(v)).<.0)..sio_er |
| cc20 | 72 6f 72 28 22 53 69 6f 5f 70 75 74 6c 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 | ror("Sio_putl.error");.....retur |
| cc40 | 6e 20 6e 3b 0a 7d 0a 0a 73 73 69 7a 65 5f 74 20 53 69 6f 5f 70 75 74 73 28 63 68 61 72 20 73 5b | n.n;.}..ssize_t.Sio_puts(char.s[ |
| cc60 | 5d 29 0a 7b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 6e 3b 0a 20 20 0a 20 20 20 20 69 66 20 28 28 | ]).{.....ssize_t.n;........if.(( |
| cc80 | 6e 20 3d 20 73 69 6f 5f 70 75 74 73 28 73 29 29 20 3c 20 30 29 0a 09 73 69 6f 5f 65 72 72 6f 72 | n.=.sio_puts(s)).<.0)..sio_error |
| cca0 | 28 22 53 69 6f 5f 70 75 74 73 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 6e | ("Sio_puts.error");.....return.n |
| ccc0 | 3b 0a 7d 0a 0a 76 6f 69 64 20 53 69 6f 5f 65 72 72 6f 72 28 63 68 61 72 20 73 5b 5d 29 0a 7b 0a | ;.}..void.Sio_error(char.s[]).{. |
| cce0 | 20 20 20 20 73 69 6f 5f 65 72 72 6f 72 28 73 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ....sio_error(s);.}../********** |
| cd00 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 | **********************..*.Wrappe |
| cd20 | 72 73 20 66 6f 72 20 55 6e 69 78 20 49 2f 4f 20 72 6f 75 74 69 6e 65 73 0a 20 2a 2a 2a 2a 2a 2a | rs.for.Unix.I/O.routines..****** |
| cd40 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 69 6e 74 | **************************/..int |
| cd60 | 20 4f 70 65 6e 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 74 68 6e 61 6d 65 2c 20 69 6e 74 20 | .Open(const.char.*pathname,.int. |
| cd80 | 66 6c 61 67 73 2c 20 6d 6f 64 65 5f 74 20 6d 6f 64 65 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 | flags,.mode_t.mode)..{.....int.r |
| cda0 | 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 6f 70 65 6e 28 70 61 74 68 6e 61 6d 65 2c | c;......if.((rc.=.open(pathname, |
| cdc0 | 20 66 6c 61 67 73 2c 20 6d 6f 64 65 29 29 20 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 | .flags,.mode))..<.0)..unix_error |
| cde0 | 28 22 4f 70 65 6e 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d | ("Open.error");.....return.rc;.} |
| ce00 | 0a 0a 73 73 69 7a 65 5f 74 20 52 65 61 64 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a 62 75 66 | ..ssize_t.Read(int.fd,.void.*buf |
| ce20 | 2c 20 73 69 7a 65 5f 74 20 63 6f 75 6e 74 29 20 0a 7b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 72 | ,.size_t.count)..{.....ssize_t.r |
| ce40 | 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 72 65 61 64 28 66 64 2c 20 62 75 66 2c 20 | c;......if.((rc.=.read(fd,.buf,. |
| ce60 | 63 6f 75 6e 74 29 29 20 3c 20 30 29 20 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 52 65 61 64 20 | count)).<.0)...unix_error("Read. |
| ce80 | 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 73 73 69 7a 65 | error");.....return.rc;.}..ssize |
| cea0 | 5f 74 20 57 72 69 74 65 28 69 6e 74 20 66 64 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 62 75 66 | _t.Write(int.fd,.const.void.*buf |
| cec0 | 2c 20 73 69 7a 65 5f 74 20 63 6f 75 6e 74 29 20 0a 7b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 72 | ,.size_t.count)..{.....ssize_t.r |
| cee0 | 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 77 72 69 74 65 28 66 64 2c 20 62 75 66 2c | c;......if.((rc.=.write(fd,.buf, |
| cf00 | 20 63 6f 75 6e 74 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 57 72 69 74 65 | .count)).<.0)..unix_error("Write |
| cf20 | 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 6f 66 66 5f | .error");.....return.rc;.}..off_ |
| cf40 | 74 20 4c 73 65 65 6b 28 69 6e 74 20 66 69 6c 64 65 73 2c 20 6f 66 66 5f 74 20 6f 66 66 73 65 74 | t.Lseek(int.fildes,.off_t.offset |
| cf60 | 2c 20 69 6e 74 20 77 68 65 6e 63 65 29 20 0a 7b 0a 20 20 20 20 6f 66 66 5f 74 20 72 63 3b 0a 0a | ,.int.whence)..{.....off_t.rc;.. |
| cf80 | 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 6c 73 65 65 6b 28 66 69 6c 64 65 73 2c 20 6f 66 66 73 | ....if.((rc.=.lseek(fildes,.offs |
| cfa0 | 65 74 2c 20 77 68 65 6e 63 65 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 4c | et,.whence)).<.0)..unix_error("L |
| cfc0 | 73 65 65 6b 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a | seek.error");.....return.rc;.}.. |
| cfe0 | 76 6f 69 64 20 43 6c 6f 73 65 28 69 6e 74 20 66 64 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 | void.Close(int.fd)..{.....int.rc |
| d000 | 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 63 6c 6f 73 65 28 66 64 29 29 20 3c 20 30 29 | ;......if.((rc.=.close(fd)).<.0) |
| d020 | 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 43 6c 6f 73 65 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a | ..unix_error("Close.error");.}.. |
| d040 | 69 6e 74 20 53 65 6c 65 63 74 28 69 6e 74 20 20 6e 2c 20 66 64 5f 73 65 74 20 2a 72 65 61 64 66 | int.Select(int..n,.fd_set.*readf |
| d060 | 64 73 2c 20 66 64 5f 73 65 74 20 2a 77 72 69 74 65 66 64 73 2c 0a 09 20 20 20 66 64 5f 73 65 74 | ds,.fd_set.*writefds,.....fd_set |
| d080 | 20 2a 65 78 63 65 70 74 66 64 73 2c 20 73 74 72 75 63 74 20 74 69 6d 65 76 61 6c 20 2a 74 69 6d | .*exceptfds,.struct.timeval.*tim |
| d0a0 | 65 6f 75 74 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 | eout)..{.....int.rc;......if.((r |
| d0c0 | 63 20 3d 20 73 65 6c 65 63 74 28 6e 2c 20 72 65 61 64 66 64 73 2c 20 77 72 69 74 65 66 64 73 2c | c.=.select(n,.readfds,.writefds, |
| d0e0 | 20 65 78 63 65 70 74 66 64 73 2c 20 74 69 6d 65 6f 75 74 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 | .exceptfds,.timeout)).<.0)..unix |
| d100 | 5f 65 72 72 6f 72 28 22 53 65 6c 65 63 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 | _error("Select.error");.....retu |
| d120 | 72 6e 20 72 63 3b 0a 7d 0a 0a 69 6e 74 20 44 75 70 32 28 69 6e 74 20 66 64 31 2c 20 69 6e 74 20 | rn.rc;.}..int.Dup2(int.fd1,.int. |
| d140 | 66 64 32 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 | fd2)..{.....int.rc;......if.((rc |
| d160 | 20 3d 20 64 75 70 32 28 66 64 31 2c 20 66 64 32 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 | .=.dup2(fd1,.fd2)).<.0)..unix_er |
| d180 | 72 6f 72 28 22 44 75 70 32 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 | ror("Dup2.error");.....return.rc |
| d1a0 | 3b 0a 7d 0a 0a 76 6f 69 64 20 53 74 61 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e | ;.}..void.Stat(const.char.*filen |
| d1c0 | 61 6d 65 2c 20 73 74 72 75 63 74 20 73 74 61 74 20 2a 62 75 66 29 20 0a 7b 0a 20 20 20 20 69 66 | ame,.struct.stat.*buf)..{.....if |
| d1e0 | 20 28 73 74 61 74 28 66 69 6c 65 6e 61 6d 65 2c 20 62 75 66 29 20 3c 20 30 29 0a 09 75 6e 69 78 | .(stat(filename,.buf).<.0)..unix |
| d200 | 5f 65 72 72 6f 72 28 22 53 74 61 74 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 46 73 | _error("Stat.error");.}..void.Fs |
| d220 | 74 61 74 28 69 6e 74 20 66 64 2c 20 73 74 72 75 63 74 20 73 74 61 74 20 2a 62 75 66 29 20 0a 7b | tat(int.fd,.struct.stat.*buf)..{ |
| d240 | 0a 20 20 20 20 69 66 20 28 66 73 74 61 74 28 66 64 2c 20 62 75 66 29 20 3c 20 30 29 0a 09 75 6e | .....if.(fstat(fd,.buf).<.0)..un |
| d260 | 69 78 5f 65 72 72 6f 72 28 22 46 73 74 61 74 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 2f 2a 2a 2a | ix_error("Fstat.error");.}../*** |
| d280 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 | ******************************.. |
| d2a0 | 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 64 69 72 65 63 74 6f 72 79 20 66 75 6e 63 74 69 6f | *.Wrappers.for.directory.functio |
| d2c0 | 6e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | n..***************************** |
| d2e0 | 2a 2a 2a 2a 2f 0a 0a 44 49 52 20 2a 4f 70 65 6e 64 69 72 28 63 6f 6e 73 74 20 63 68 61 72 20 2a | ****/..DIR.*Opendir(const.char.* |
| d300 | 6e 61 6d 65 29 20 0a 7b 0a 20 20 20 20 44 49 52 20 2a 64 69 72 70 20 3d 20 6f 70 65 6e 64 69 72 | name)..{.....DIR.*dirp.=.opendir |
| d320 | 28 6e 61 6d 65 29 3b 20 0a 0a 20 20 20 20 69 66 20 28 21 64 69 72 70 29 0a 20 20 20 20 20 20 20 | (name);.......if.(!dirp)........ |
| d340 | 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 6f 70 65 6e 64 69 72 20 65 72 72 6f 72 22 29 3b 0a 20 20 | .unix_error("opendir.error");... |
| d360 | 20 20 72 65 74 75 72 6e 20 64 69 72 70 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 64 69 72 65 6e 74 20 | ..return.dirp;.}..struct.dirent. |
| d380 | 2a 52 65 61 64 64 69 72 28 44 49 52 20 2a 64 69 72 70 29 0a 7b 0a 20 20 20 20 73 74 72 75 63 74 | *Readdir(DIR.*dirp).{.....struct |
| d3a0 | 20 64 69 72 65 6e 74 20 2a 64 65 70 3b 0a 20 20 20 20 0a 20 20 20 20 65 72 72 6e 6f 20 3d 20 30 | .dirent.*dep;..........errno.=.0 |
| d3c0 | 3b 0a 20 20 20 20 64 65 70 20 3d 20 72 65 61 64 64 69 72 28 64 69 72 70 29 3b 0a 20 20 20 20 69 | ;.....dep.=.readdir(dirp);.....i |
| d3e0 | 66 20 28 28 64 65 70 20 3d 3d 20 4e 55 4c 4c 29 20 26 26 20 28 65 72 72 6e 6f 20 21 3d 20 30 29 | f.((dep.==.NULL).&&.(errno.!=.0) |
| d400 | 29 0a 20 20 20 20 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 72 65 61 64 64 69 72 20 65 72 | ).........unix_error("readdir.er |
| d420 | 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 64 65 70 3b 0a 7d 0a 0a 69 6e 74 20 43 6c | ror");.....return.dep;.}..int.Cl |
| d440 | 6f 73 65 64 69 72 28 44 49 52 20 2a 64 69 72 70 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b | osedir(DIR.*dirp)..{.....int.rc; |
| d460 | 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 63 6c 6f 73 65 64 69 72 28 64 69 72 70 29 29 20 | ......if.((rc.=.closedir(dirp)). |
| d480 | 3c 20 30 29 0a 20 20 20 20 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 63 6c 6f 73 65 64 69 | <.0).........unix_error("closedi |
| d4a0 | 72 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 2f 2a 2a | r.error");.....return.rc;.}../** |
| d4c0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| d4e0 | 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 6d 65 6d 6f 72 79 20 6d 61 70 | *****..*.Wrappers.for.memory.map |
| d500 | 70 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ping.functions..**************** |
| d520 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 76 6f 69 64 20 2a 4d | ***********************/.void.*M |
| d540 | 6d 61 70 28 76 6f 69 64 20 2a 61 64 64 72 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 2c 20 69 6e 74 20 | map(void.*addr,.size_t.len,.int. |
| d560 | 70 72 6f 74 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 69 6e 74 20 66 64 2c 20 6f 66 66 5f 74 20 6f | prot,.int.flags,.int.fd,.off_t.o |
| d580 | 66 66 73 65 74 29 20 0a 7b 0a 20 20 20 20 76 6f 69 64 20 2a 70 74 72 3b 0a 0a 20 20 20 20 69 66 | ffset)..{.....void.*ptr;......if |
| d5a0 | 20 28 28 70 74 72 20 3d 20 6d 6d 61 70 28 61 64 64 72 2c 20 6c 65 6e 2c 20 70 72 6f 74 2c 20 66 | .((ptr.=.mmap(addr,.len,.prot,.f |
| d5c0 | 6c 61 67 73 2c 20 66 64 2c 20 6f 66 66 73 65 74 29 29 20 3d 3d 20 28 28 76 6f 69 64 20 2a 29 20 | lags,.fd,.offset)).==.((void.*). |
| d5e0 | 2d 31 29 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 6d 6d 61 70 20 65 72 72 6f 72 22 29 3b 0a | -1))..unix_error("mmap.error");. |
| d600 | 20 20 20 20 72 65 74 75 72 6e 28 70 74 72 29 3b 0a 7d 0a 0a 76 6f 69 64 20 4d 75 6e 6d 61 70 28 | ....return(ptr);.}..void.Munmap( |
| d620 | 76 6f 69 64 20 2a 73 74 61 72 74 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 67 74 68 29 20 0a 7b 0a 20 | void.*start,.size_t.length)..{.. |
| d640 | 20 20 20 69 66 20 28 6d 75 6e 6d 61 70 28 73 74 61 72 74 2c 20 6c 65 6e 67 74 68 29 20 3c 20 30 | ...if.(munmap(start,.length).<.0 |
| d660 | 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 6d 75 6e 6d 61 70 20 65 72 72 6f 72 22 29 3b 0a 7d | )..unix_error("munmap.error");.} |
| d680 | 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ../***************************** |
| d6a0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 | **********************..*.Wrappe |
| d6c0 | 72 73 20 66 6f 72 20 64 79 6e 61 6d 69 63 20 73 74 6f 72 61 67 65 20 61 6c 6c 6f 63 61 74 69 6f | rs.for.dynamic.storage.allocatio |
| d6e0 | 6e 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | n.functions..******************* |
| d700 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| d720 | 2f 0a 0a 76 6f 69 64 20 2a 4d 61 6c 6c 6f 63 28 73 69 7a 65 5f 74 20 73 69 7a 65 29 20 0a 7b 0a | /..void.*Malloc(size_t.size)..{. |
| d740 | 20 20 20 20 76 6f 69 64 20 2a 70 3b 0a 0a 20 20 20 20 69 66 20 28 28 70 20 20 3d 20 6d 61 6c 6c | ....void.*p;......if.((p..=.mall |
| d760 | 6f 63 28 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 | oc(size)).==.NULL)..unix_error(" |
| d780 | 4d 61 6c 6c 6f 63 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 70 3b 0a 7d 0a | Malloc.error");.....return.p;.}. |
| d7a0 | 0a 76 6f 69 64 20 2a 52 65 61 6c 6c 6f 63 28 76 6f 69 64 20 2a 70 74 72 2c 20 73 69 7a 65 5f 74 | .void.*Realloc(void.*ptr,.size_t |
| d7c0 | 20 73 69 7a 65 29 20 0a 7b 0a 20 20 20 20 76 6f 69 64 20 2a 70 3b 0a 0a 20 20 20 20 69 66 20 28 | .size)..{.....void.*p;......if.( |
| d7e0 | 28 70 20 20 3d 20 72 65 61 6c 6c 6f 63 28 70 74 72 2c 20 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c | (p..=.realloc(ptr,.size)).==.NUL |
| d800 | 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 52 65 61 6c 6c 6f 63 20 65 72 72 6f 72 22 29 3b | L)..unix_error("Realloc.error"); |
| d820 | 0a 20 20 20 20 72 65 74 75 72 6e 20 70 3b 0a 7d 0a 0a 76 6f 69 64 20 2a 43 61 6c 6c 6f 63 28 73 | .....return.p;.}..void.*Calloc(s |
| d840 | 69 7a 65 5f 74 20 6e 6d 65 6d 62 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 29 20 0a 7b 0a 20 20 20 | ize_t.nmemb,.size_t.size)..{.... |
| d860 | 20 76 6f 69 64 20 2a 70 3b 0a 0a 20 20 20 20 69 66 20 28 28 70 20 3d 20 63 61 6c 6c 6f 63 28 6e | .void.*p;......if.((p.=.calloc(n |
| d880 | 6d 65 6d 62 2c 20 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f | memb,.size)).==.NULL)..unix_erro |
| d8a0 | 72 28 22 43 61 6c 6c 6f 63 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 70 3b | r("Calloc.error");.....return.p; |
| d8c0 | 0a 7d 0a 0a 76 6f 69 64 20 46 72 65 65 28 76 6f 69 64 20 2a 70 74 72 29 20 0a 7b 0a 20 20 20 20 | .}..void.Free(void.*ptr)..{..... |
| d8e0 | 66 72 65 65 28 70 74 72 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | free(ptr);.}../***************** |
| d900 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 | *************************..*.Wra |
| d920 | 70 70 65 72 73 20 66 6f 72 20 74 68 65 20 53 74 61 6e 64 61 72 64 20 49 2f 4f 20 66 75 6e 63 74 | ppers.for.the.Standard.I/O.funct |
| d940 | 69 6f 6e 73 2e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ions...************************* |
| d960 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 76 6f 69 64 20 46 63 6c 6f 73 65 28 46 | *****************/.void.Fclose(F |
| d980 | 49 4c 45 20 2a 66 70 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 66 63 6c 6f 73 65 28 66 70 29 20 21 | ILE.*fp)..{.....if.(fclose(fp).! |
| d9a0 | 3d 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 46 63 6c 6f 73 65 20 65 72 72 6f 72 22 29 | =.0)..unix_error("Fclose.error") |
| d9c0 | 3b 0a 7d 0a 0a 46 49 4c 45 20 2a 46 64 6f 70 65 6e 28 69 6e 74 20 66 64 2c 20 63 6f 6e 73 74 20 | ;.}..FILE.*Fdopen(int.fd,.const. |
| d9e0 | 63 68 61 72 20 2a 74 79 70 65 29 20 0a 7b 0a 20 20 20 20 46 49 4c 45 20 2a 66 70 3b 0a 0a 20 20 | char.*type)..{.....FILE.*fp;.... |
| da00 | 20 20 69 66 20 28 28 66 70 20 3d 20 66 64 6f 70 65 6e 28 66 64 2c 20 74 79 70 65 29 29 20 3d 3d | ..if.((fp.=.fdopen(fd,.type)).== |
| da20 | 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 46 64 6f 70 65 6e 20 65 72 72 6f 72 | .NULL)..unix_error("Fdopen.error |
| da40 | 22 29 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 66 70 3b 0a 7d 0a 0a 63 68 61 72 20 2a 46 67 65 | ");......return.fp;.}..char.*Fge |
| da60 | 74 73 28 63 68 61 72 20 2a 70 74 72 2c 20 69 6e 74 20 6e 2c 20 46 49 4c 45 20 2a 73 74 72 65 61 | ts(char.*ptr,.int.n,.FILE.*strea |
| da80 | 6d 29 20 0a 7b 0a 20 20 20 20 63 68 61 72 20 2a 72 70 74 72 3b 0a 0a 20 20 20 20 69 66 20 28 28 | m)..{.....char.*rptr;......if.(( |
| daa0 | 28 72 70 74 72 20 3d 20 66 67 65 74 73 28 70 74 72 2c 20 6e 2c 20 73 74 72 65 61 6d 29 29 20 3d | (rptr.=.fgets(ptr,.n,.stream)).= |
| dac0 | 3d 20 4e 55 4c 4c 29 20 26 26 20 66 65 72 72 6f 72 28 73 74 72 65 61 6d 29 29 0a 09 61 70 70 5f | =.NULL).&&.ferror(stream))..app_ |
| dae0 | 65 72 72 6f 72 28 22 46 67 65 74 73 20 65 72 72 6f 72 22 29 3b 0a 0a 20 20 20 20 72 65 74 75 72 | error("Fgets.error");......retur |
| db00 | 6e 20 72 70 74 72 3b 0a 7d 0a 0a 46 49 4c 45 20 2a 46 6f 70 65 6e 28 63 6f 6e 73 74 20 63 68 61 | n.rptr;.}..FILE.*Fopen(const.cha |
| db20 | 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6d 6f 64 65 29 20 0a | r.*filename,.const.char.*mode).. |
| db40 | 7b 0a 20 20 20 20 46 49 4c 45 20 2a 66 70 3b 0a 0a 20 20 20 20 69 66 20 28 28 66 70 20 3d 20 66 | {.....FILE.*fp;......if.((fp.=.f |
| db60 | 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 6d 6f 64 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 | open(filename,.mode)).==.NULL).. |
| db80 | 75 6e 69 78 5f 65 72 72 6f 72 28 22 46 6f 70 65 6e 20 65 72 72 6f 72 22 29 3b 0a 0a 20 20 20 20 | unix_error("Fopen.error");...... |
| dba0 | 72 65 74 75 72 6e 20 66 70 3b 0a 7d 0a 0a 76 6f 69 64 20 46 70 75 74 73 28 63 6f 6e 73 74 20 63 | return.fp;.}..void.Fputs(const.c |
| dbc0 | 68 61 72 20 2a 70 74 72 2c 20 46 49 4c 45 20 2a 73 74 72 65 61 6d 29 20 0a 7b 0a 20 20 20 20 69 | har.*ptr,.FILE.*stream)..{.....i |
| dbe0 | 66 20 28 66 70 75 74 73 28 70 74 72 2c 20 73 74 72 65 61 6d 29 20 3d 3d 20 45 4f 46 29 0a 09 75 | f.(fputs(ptr,.stream).==.EOF)..u |
| dc00 | 6e 69 78 5f 65 72 72 6f 72 28 22 46 70 75 74 73 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 73 69 7a | nix_error("Fputs.error");.}..siz |
| dc20 | 65 5f 74 20 46 72 65 61 64 28 76 6f 69 64 20 2a 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 | e_t.Fread(void.*ptr,.size_t.size |
| dc40 | 2c 20 73 69 7a 65 5f 74 20 6e 6d 65 6d 62 2c 20 46 49 4c 45 20 2a 73 74 72 65 61 6d 29 20 0a 7b | ,.size_t.nmemb,.FILE.*stream)..{ |
| dc60 | 0a 20 20 20 20 73 69 7a 65 5f 74 20 6e 3b 0a 0a 20 20 20 20 69 66 20 28 28 28 6e 20 3d 20 66 72 | .....size_t.n;......if.(((n.=.fr |
| dc80 | 65 61 64 28 70 74 72 2c 20 73 69 7a 65 2c 20 6e 6d 65 6d 62 2c 20 73 74 72 65 61 6d 29 29 20 3c | ead(ptr,.size,.nmemb,.stream)).< |
| dca0 | 20 6e 6d 65 6d 62 29 20 26 26 20 66 65 72 72 6f 72 28 73 74 72 65 61 6d 29 29 20 0a 09 75 6e 69 | .nmemb).&&.ferror(stream))...uni |
| dcc0 | 78 5f 65 72 72 6f 72 28 22 46 72 65 61 64 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 | x_error("Fread.error");.....retu |
| dce0 | 72 6e 20 6e 3b 0a 7d 0a 0a 76 6f 69 64 20 46 77 72 69 74 65 28 63 6f 6e 73 74 20 76 6f 69 64 20 | rn.n;.}..void.Fwrite(const.void. |
| dd00 | 2a 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c 20 73 69 7a 65 5f 74 20 6e 6d 65 6d 62 2c | *ptr,.size_t.size,.size_t.nmemb, |
| dd20 | 20 46 49 4c 45 20 2a 73 74 72 65 61 6d 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 66 77 72 69 74 65 | .FILE.*stream)..{.....if.(fwrite |
| dd40 | 28 70 74 72 2c 20 73 69 7a 65 2c 20 6e 6d 65 6d 62 2c 20 73 74 72 65 61 6d 29 20 3c 20 6e 6d 65 | (ptr,.size,.nmemb,.stream).<.nme |
| dd60 | 6d 62 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 46 77 72 69 74 65 20 65 72 72 6f 72 22 29 3b | mb)..unix_error("Fwrite.error"); |
| dd80 | 0a 7d 0a 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .}.../************************** |
| dda0 | 2a 2a 20 0a 20 2a 20 53 6f 63 6b 65 74 73 20 69 6e 74 65 72 66 61 63 65 20 77 72 61 70 70 65 72 | **...*.Sockets.interface.wrapper |
| ddc0 | 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f | s..****************************/ |
| dde0 | 0a 0a 69 6e 74 20 53 6f 63 6b 65 74 28 69 6e 74 20 64 6f 6d 61 69 6e 2c 20 69 6e 74 20 74 79 70 | ..int.Socket(int.domain,.int.typ |
| de00 | 65 2c 20 69 6e 74 20 70 72 6f 74 6f 63 6f 6c 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a | e,.int.protocol)..{.....int.rc;. |
| de20 | 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 73 6f 63 6b 65 74 28 64 6f 6d 61 69 6e 2c 20 74 79 | .....if.((rc.=.socket(domain,.ty |
| de40 | 70 65 2c 20 70 72 6f 74 6f 63 6f 6c 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 | pe,.protocol)).<.0)..unix_error( |
| de60 | 22 53 6f 63 6b 65 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a | "Socket.error");.....return.rc;. |
| de80 | 7d 0a 0a 76 6f 69 64 20 53 65 74 73 6f 63 6b 6f 70 74 28 69 6e 74 20 73 2c 20 69 6e 74 20 6c 65 | }..void.Setsockopt(int.s,.int.le |
| dea0 | 76 65 6c 2c 20 69 6e 74 20 6f 70 74 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 6f 70 | vel,.int.optname,.const.void.*op |
| dec0 | 74 76 61 6c 2c 20 69 6e 74 20 6f 70 74 6c 65 6e 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b | tval,.int.optlen)..{.....int.rc; |
| dee0 | 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 73 65 74 73 6f 63 6b 6f 70 74 28 73 2c 20 6c 65 | ......if.((rc.=.setsockopt(s,.le |
| df00 | 76 65 6c 2c 20 6f 70 74 6e 61 6d 65 2c 20 6f 70 74 76 61 6c 2c 20 6f 70 74 6c 65 6e 29 29 20 3c | vel,.optname,.optval,.optlen)).< |
| df20 | 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 65 74 73 6f 63 6b 6f 70 74 20 65 72 72 6f | .0)..unix_error("Setsockopt.erro |
| df40 | 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 42 69 6e 64 28 69 6e 74 20 73 6f 63 6b 66 64 2c 20 73 74 | r");.}..void.Bind(int.sockfd,.st |
| df60 | 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 2a 6d 79 5f 61 64 64 72 2c 20 69 6e 74 20 61 64 64 72 | ruct.sockaddr.*my_addr,.int.addr |
| df80 | 6c 65 6e 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 | len)..{.....int.rc;......if.((rc |
| dfa0 | 20 3d 20 62 69 6e 64 28 73 6f 63 6b 66 64 2c 20 6d 79 5f 61 64 64 72 2c 20 61 64 64 72 6c 65 6e | .=.bind(sockfd,.my_addr,.addrlen |
| dfc0 | 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 42 69 6e 64 20 65 72 72 6f 72 22 | )).<.0)..unix_error("Bind.error" |
| dfe0 | 29 3b 0a 7d 0a 0a 76 6f 69 64 20 4c 69 73 74 65 6e 28 69 6e 74 20 73 2c 20 69 6e 74 20 62 61 63 | );.}..void.Listen(int.s,.int.bac |
| e000 | 6b 6c 6f 67 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 | klog)..{.....int.rc;......if.((r |
| e020 | 63 20 3d 20 6c 69 73 74 65 6e 28 73 2c 20 20 62 61 63 6b 6c 6f 67 29 29 20 3c 20 30 29 0a 09 75 | c.=.listen(s,..backlog)).<.0)..u |
| e040 | 6e 69 78 5f 65 72 72 6f 72 28 22 4c 69 73 74 65 6e 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 69 6e | nix_error("Listen.error");.}..in |
| e060 | 74 20 41 63 63 65 70 74 28 69 6e 74 20 73 2c 20 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 | t.Accept(int.s,.struct.sockaddr. |
| e080 | 2a 61 64 64 72 2c 20 73 6f 63 6b 6c 65 6e 5f 74 20 2a 61 64 64 72 6c 65 6e 29 20 0a 7b 0a 20 20 | *addr,.socklen_t.*addrlen)..{... |
| e0a0 | 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 61 63 63 65 70 74 28 | ..int.rc;......if.((rc.=.accept( |
| e0c0 | 73 2c 20 61 64 64 72 2c 20 61 64 64 72 6c 65 6e 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 | s,.addr,.addrlen)).<.0)..unix_er |
| e0e0 | 72 6f 72 28 22 41 63 63 65 70 74 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 | ror("Accept.error");.....return. |
| e100 | 72 63 3b 0a 7d 0a 0a 76 6f 69 64 20 43 6f 6e 6e 65 63 74 28 69 6e 74 20 73 6f 63 6b 66 64 2c 20 | rc;.}..void.Connect(int.sockfd,. |
| e120 | 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 2a 73 65 72 76 5f 61 64 64 72 2c 20 69 6e 74 20 | struct.sockaddr.*serv_addr,.int. |
| e140 | 61 64 64 72 6c 65 6e 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 | addrlen)..{.....int.rc;......if. |
| e160 | 28 28 72 63 20 3d 20 63 6f 6e 6e 65 63 74 28 73 6f 63 6b 66 64 2c 20 73 65 72 76 5f 61 64 64 72 | ((rc.=.connect(sockfd,.serv_addr |
| e180 | 2c 20 61 64 64 72 6c 65 6e 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 43 6f | ,.addrlen)).<.0)..unix_error("Co |
| e1a0 | 6e 6e 65 63 74 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | nnect.error");.}../************* |
| e1c0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 50 72 6f 74 6f 63 6f 6c 2d 69 | ******************..*.Protocol-i |
| e1e0 | 6e 64 65 70 65 6e 64 65 6e 74 20 77 72 61 70 70 65 72 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ndependent.wrappers..*********** |
| e200 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 | ********************/./*.$begin. |
| e220 | 67 65 74 61 64 64 72 69 6e 66 6f 20 2a 2f 0a 76 6f 69 64 20 47 65 74 61 64 64 72 69 6e 66 6f 28 | getaddrinfo.*/.void.Getaddrinfo( |
| e240 | 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 6f 64 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 65 | const.char.*node,.const.char.*se |
| e260 | 72 76 69 63 65 2c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 73 | rvice,...................const.s |
| e280 | 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f 20 2a 68 69 6e 74 73 2c 20 73 74 72 75 63 74 20 61 64 | truct.addrinfo.*hints,.struct.ad |
| e2a0 | 64 72 69 6e 66 6f 20 2a 2a 72 65 73 29 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 | drinfo.**res).{.....int.rc;..... |
| e2c0 | 20 69 66 20 28 28 72 63 20 3d 20 67 65 74 61 64 64 72 69 6e 66 6f 28 6e 6f 64 65 2c 20 73 65 72 | .if.((rc.=.getaddrinfo(node,.ser |
| e2e0 | 76 69 63 65 2c 20 68 69 6e 74 73 2c 20 72 65 73 29 29 20 21 3d 20 30 29 20 0a 20 20 20 20 20 20 | vice,.hints,.res)).!=.0)........ |
| e300 | 20 20 67 61 69 5f 65 72 72 6f 72 28 72 63 2c 20 22 47 65 74 61 64 64 72 69 6e 66 6f 20 65 72 72 | ..gai_error(rc,."Getaddrinfo.err |
| e320 | 6f 72 22 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 67 65 74 61 64 64 72 69 6e 66 6f 20 2a 2f 0a 0a | or");.}./*.$end.getaddrinfo.*/.. |
| e340 | 76 6f 69 64 20 47 65 74 6e 61 6d 65 69 6e 66 6f 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 73 6f | void.Getnameinfo(const.struct.so |
| e360 | 63 6b 61 64 64 72 20 2a 73 61 2c 20 73 6f 63 6b 6c 65 6e 5f 74 20 73 61 6c 65 6e 2c 20 63 68 61 | ckaddr.*sa,.socklen_t.salen,.cha |
| e380 | 72 20 2a 68 6f 73 74 2c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 5f | r.*host,...................size_ |
| e3a0 | 74 20 68 6f 73 74 6c 65 6e 2c 20 63 68 61 72 20 2a 73 65 72 76 2c 20 73 69 7a 65 5f 74 20 73 65 | t.hostlen,.char.*serv,.size_t.se |
| e3c0 | 72 76 6c 65 6e 2c 20 69 6e 74 20 66 6c 61 67 73 29 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a | rvlen,.int.flags).{.....int.rc;. |
| e3e0 | 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 67 65 74 6e 61 6d 65 69 6e 66 6f 28 73 61 2c 20 73 | .....if.((rc.=.getnameinfo(sa,.s |
| e400 | 61 6c 65 6e 2c 20 68 6f 73 74 2c 20 68 6f 73 74 6c 65 6e 2c 20 73 65 72 76 2c 20 0a 20 20 20 20 | alen,.host,.hostlen,.serv,...... |
| e420 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 72 76 6c 65 6e 2c 20 66 | ......................servlen,.f |
| e440 | 6c 61 67 73 29 29 20 21 3d 20 30 29 20 0a 20 20 20 20 20 20 20 20 67 61 69 5f 65 72 72 6f 72 28 | lags)).!=.0)..........gai_error( |
| e460 | 72 63 2c 20 22 47 65 74 6e 61 6d 65 69 6e 66 6f 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 | rc,."Getnameinfo.error");.}..voi |
| e480 | 64 20 46 72 65 65 61 64 64 72 69 6e 66 6f 28 73 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f 20 2a | d.Freeaddrinfo(struct.addrinfo.* |
| e4a0 | 72 65 73 29 0a 7b 0a 20 20 20 20 66 72 65 65 61 64 64 72 69 6e 66 6f 28 72 65 73 29 3b 0a 7d 0a | res).{.....freeaddrinfo(res);.}. |
| e4c0 | 0a 76 6f 69 64 20 49 6e 65 74 5f 6e 74 6f 70 28 69 6e 74 20 61 66 2c 20 63 6f 6e 73 74 20 76 6f | .void.Inet_ntop(int.af,.const.vo |
| e4e0 | 69 64 20 2a 73 72 63 2c 20 63 68 61 72 20 2a 64 73 74 2c 20 73 6f 63 6b 6c 65 6e 5f 74 20 73 69 | id.*src,.char.*dst,.socklen_t.si |
| e500 | 7a 65 29 0a 7b 0a 20 20 20 20 69 66 20 28 21 69 6e 65 74 5f 6e 74 6f 70 28 61 66 2c 20 73 72 63 | ze).{.....if.(!inet_ntop(af,.src |
| e520 | 2c 20 64 73 74 2c 20 73 69 7a 65 29 29 0a 20 20 20 20 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 | ,.dst,.size)).........unix_error |
| e540 | 28 22 49 6e 65 74 5f 6e 74 6f 70 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 49 6e 65 | ("Inet_ntop.error");.}..void.Ine |
| e560 | 74 5f 70 74 6f 6e 28 69 6e 74 20 61 66 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 72 63 2c 20 | t_pton(int.af,.const.char.*src,. |
| e580 | 76 6f 69 64 20 2a 64 73 74 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 72 | void.*dst)..{.....int.rc;......r |
| e5a0 | 63 20 3d 20 69 6e 65 74 5f 70 74 6f 6e 28 61 66 2c 20 73 72 63 2c 20 64 73 74 29 3b 0a 20 20 20 | c.=.inet_pton(af,.src,.dst);.... |
| e5c0 | 20 69 66 20 28 72 63 20 3d 3d 20 30 29 0a 09 61 70 70 5f 65 72 72 6f 72 28 22 69 6e 65 74 5f 70 | .if.(rc.==.0)..app_error("inet_p |
| e5e0 | 74 6f 6e 20 65 72 72 6f 72 3a 20 69 6e 76 61 6c 69 64 20 64 6f 74 74 65 64 2d 64 65 63 69 6d 61 | ton.error:.invalid.dotted-decima |
| e600 | 6c 20 61 64 64 72 65 73 73 22 29 3b 0a 20 20 20 20 65 6c 73 65 20 69 66 20 28 72 63 20 3c 20 30 | l.address");.....else.if.(rc.<.0 |
| e620 | 29 0a 20 20 20 20 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 49 6e 65 74 5f 70 74 6f 6e 20 | ).........unix_error("Inet_pton. |
| e640 | 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | error");.}../******************* |
| e660 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 44 4e 53 20 | ************************..*.DNS. |
| e680 | 69 6e 74 65 72 66 61 63 65 20 77 72 61 70 70 65 72 73 2e 20 0a 20 2a 0a 20 2a 20 4e 4f 54 45 3a | interface.wrappers....*..*.NOTE: |
| e6a0 | 20 54 68 65 73 65 20 61 72 65 20 6f 62 73 6f 6c 65 74 65 20 62 65 63 61 75 73 65 20 74 68 65 79 | .These.are.obsolete.because.they |
| e6c0 | 20 61 72 65 20 6e 6f 74 20 74 68 72 65 61 64 20 73 61 66 65 2e 20 55 73 65 0a 20 2a 20 67 65 74 | .are.not.thread.safe..Use..*.get |
| e6e0 | 61 64 64 72 69 6e 66 6f 20 61 6e 64 20 67 65 74 6e 61 6d 65 69 6e 66 6f 20 69 6e 73 74 65 61 64 | addrinfo.and.getnameinfo.instead |
| e700 | 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ..****************************** |
| e720 | 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 24 62 65 67 69 6e 20 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 20 | *****/../*.$begin.gethostbyname. |
| e740 | 2a 2f 0a 73 74 72 75 63 74 20 68 6f 73 74 65 6e 74 20 2a 47 65 74 68 6f 73 74 62 79 6e 61 6d 65 | */.struct.hostent.*Gethostbyname |
| e760 | 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 29 20 0a 7b 0a 20 20 20 20 73 74 72 75 63 74 | (const.char.*name)..{.....struct |
| e780 | 20 68 6f 73 74 65 6e 74 20 2a 70 3b 0a 0a 20 20 20 20 69 66 20 28 28 70 20 3d 20 67 65 74 68 6f | .hostent.*p;......if.((p.=.getho |
| e7a0 | 73 74 62 79 6e 61 6d 65 28 6e 61 6d 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 64 6e 73 5f 65 72 | stbyname(name)).==.NULL)..dns_er |
| e7c0 | 72 6f 72 28 22 47 65 74 68 6f 73 74 62 79 6e 61 6d 65 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 | ror("Gethostbyname.error");..... |
| e7e0 | 72 65 74 75 72 6e 20 70 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 67 65 74 68 6f 73 74 62 79 6e 61 6d | return.p;.}./*.$end.gethostbynam |
| e800 | 65 20 2a 2f 0a 0a 73 74 72 75 63 74 20 68 6f 73 74 65 6e 74 20 2a 47 65 74 68 6f 73 74 62 79 61 | e.*/..struct.hostent.*Gethostbya |
| e820 | 64 64 72 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 61 64 64 72 2c 20 69 6e 74 20 6c 65 6e 2c 20 69 | ddr(const.char.*addr,.int.len,.i |
| e840 | 6e 74 20 74 79 70 65 29 20 0a 7b 0a 20 20 20 20 73 74 72 75 63 74 20 68 6f 73 74 65 6e 74 20 2a | nt.type)..{.....struct.hostent.* |
| e860 | 70 3b 0a 0a 20 20 20 20 69 66 20 28 28 70 20 3d 20 67 65 74 68 6f 73 74 62 79 61 64 64 72 28 61 | p;......if.((p.=.gethostbyaddr(a |
| e880 | 64 64 72 2c 20 6c 65 6e 2c 20 74 79 70 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 64 6e 73 5f 65 | ddr,.len,.type)).==.NULL)..dns_e |
| e8a0 | 72 72 6f 72 28 22 47 65 74 68 6f 73 74 62 79 61 64 64 72 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 | rror("Gethostbyaddr.error");.... |
| e8c0 | 20 72 65 74 75 72 6e 20 70 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .return.p;.}../***************** |
| e8e0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a | *******************************. |
| e900 | 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 50 74 68 72 65 61 64 73 20 74 68 72 65 61 64 20 | .*.Wrappers.for.Pthreads.thread. |
| e920 | 63 6f 6e 74 72 6f 6c 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | control.functions..************* |
| e940 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| e960 | 2a 2a 2a 2f 0a 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 63 72 65 61 74 65 28 70 74 68 72 65 61 | ***/..void.Pthread_create(pthrea |
| e980 | 64 5f 74 20 2a 74 69 64 70 2c 20 70 74 68 72 65 61 64 5f 61 74 74 72 5f 74 20 2a 61 74 74 72 70 | d_t.*tidp,.pthread_attr_t.*attrp |
| e9a0 | 2c 20 0a 09 09 20 20 20 20 76 6f 69 64 20 2a 20 28 2a 72 6f 75 74 69 6e 65 29 28 76 6f 69 64 20 | ,........void.*.(*routine)(void. |
| e9c0 | 2a 29 2c 20 76 6f 69 64 20 2a 61 72 67 70 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a | *),.void.*argp)..{.....int.rc;.. |
| e9e0 | 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 70 74 68 72 65 61 64 5f 63 72 65 61 74 65 28 74 69 64 | ....if.((rc.=.pthread_create(tid |
| ea00 | 70 2c 20 61 74 74 72 70 2c 20 72 6f 75 74 69 6e 65 2c 20 61 72 67 70 29 29 20 21 3d 20 30 29 0a | p,.attrp,.routine,.argp)).!=.0). |
| ea20 | 09 70 6f 73 69 78 5f 65 72 72 6f 72 28 72 63 2c 20 22 50 74 68 72 65 61 64 5f 63 72 65 61 74 65 | .posix_error(rc,."Pthread_create |
| ea40 | 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 63 61 6e 63 65 6c | .error");.}..void.Pthread_cancel |
| ea60 | 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 29 20 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 | (pthread_t.tid).{.....int.rc;... |
| ea80 | 20 20 20 69 66 20 28 28 72 63 20 3d 20 70 74 68 72 65 61 64 5f 63 61 6e 63 65 6c 28 74 69 64 29 | ...if.((rc.=.pthread_cancel(tid) |
| eaa0 | 29 20 21 3d 20 30 29 0a 09 70 6f 73 69 78 5f 65 72 72 6f 72 28 72 63 2c 20 22 50 74 68 72 65 61 | ).!=.0)..posix_error(rc,."Pthrea |
| eac0 | 64 5f 63 61 6e 63 65 6c 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 50 74 68 72 65 61 | d_cancel.error");.}..void.Pthrea |
| eae0 | 64 5f 6a 6f 69 6e 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 2c 20 76 6f 69 64 20 2a 2a 74 68 72 | d_join(pthread_t.tid,.void.**thr |
| eb00 | 65 61 64 5f 72 65 74 75 72 6e 29 20 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 | ead_return).{.....int.rc;......i |
| eb20 | 66 20 28 28 72 63 20 3d 20 70 74 68 72 65 61 64 5f 6a 6f 69 6e 28 74 69 64 2c 20 74 68 72 65 61 | f.((rc.=.pthread_join(tid,.threa |
| eb40 | 64 5f 72 65 74 75 72 6e 29 29 20 21 3d 20 30 29 0a 09 70 6f 73 69 78 5f 65 72 72 6f 72 28 72 63 | d_return)).!=.0)..posix_error(rc |
| eb60 | 2c 20 22 50 74 68 72 65 61 64 5f 6a 6f 69 6e 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 2f 2a 20 24 | ,."Pthread_join.error");.}../*.$ |
| eb80 | 62 65 67 69 6e 20 64 65 74 61 63 68 20 2a 2f 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 64 65 74 | begin.detach.*/.void.Pthread_det |
| eba0 | 61 63 68 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 29 20 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b | ach(pthread_t.tid).{.....int.rc; |
| ebc0 | 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 70 74 68 72 65 61 64 5f 64 65 74 61 63 68 28 74 | ......if.((rc.=.pthread_detach(t |
| ebe0 | 69 64 29 29 20 21 3d 20 30 29 0a 09 70 6f 73 69 78 5f 65 72 72 6f 72 28 72 63 2c 20 22 50 74 68 | id)).!=.0)..posix_error(rc,."Pth |
| ec00 | 72 65 61 64 5f 64 65 74 61 63 68 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 64 | read_detach.error");.}./*.$end.d |
| ec20 | 65 74 61 63 68 20 2a 2f 0a 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 65 78 69 74 28 76 6f 69 64 | etach.*/..void.Pthread_exit(void |
| ec40 | 20 2a 72 65 74 76 61 6c 29 20 7b 0a 20 20 20 20 70 74 68 72 65 61 64 5f 65 78 69 74 28 72 65 74 | .*retval).{.....pthread_exit(ret |
| ec60 | 76 61 6c 29 3b 0a 7d 0a 0a 70 74 68 72 65 61 64 5f 74 20 50 74 68 72 65 61 64 5f 73 65 6c 66 28 | val);.}..pthread_t.Pthread_self( |
| ec80 | 76 6f 69 64 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 70 74 68 72 65 61 64 5f 73 65 6c 66 28 | void).{.....return.pthread_self( |
| eca0 | 29 3b 0a 7d 0a 20 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 6f 6e 63 65 28 70 74 68 72 65 61 64 | );.}...void.Pthread_once(pthread |
| ecc0 | 5f 6f 6e 63 65 5f 74 20 2a 6f 6e 63 65 5f 63 6f 6e 74 72 6f 6c 2c 20 76 6f 69 64 20 28 2a 69 6e | _once_t.*once_control,.void.(*in |
| ece0 | 69 74 5f 66 75 6e 63 74 69 6f 6e 29 28 29 29 20 7b 0a 20 20 20 20 70 74 68 72 65 61 64 5f 6f 6e | it_function)()).{.....pthread_on |
| ed00 | 63 65 28 6f 6e 63 65 5f 63 6f 6e 74 72 6f 6c 2c 20 69 6e 69 74 5f 66 75 6e 63 74 69 6f 6e 29 3b | ce(once_control,.init_function); |
| ed20 | 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .}../*************************** |
| ed40 | 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 50 6f 73 69 78 20 73 65 6d 61 70 | ****..*.Wrappers.for.Posix.semap |
| ed60 | 68 6f 72 65 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | hores..************************* |
| ed80 | 2a 2a 2a 2a 2a 2a 2f 0a 0a 76 6f 69 64 20 53 65 6d 5f 69 6e 69 74 28 73 65 6d 5f 74 20 2a 73 65 | ******/..void.Sem_init(sem_t.*se |
| eda0 | 6d 2c 20 69 6e 74 20 70 73 68 61 72 65 64 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 76 61 6c | m,.int.pshared,.unsigned.int.val |
| edc0 | 75 65 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 73 65 6d 5f 69 6e 69 74 28 73 65 6d 2c 20 70 73 68 | ue)..{.....if.(sem_init(sem,.psh |
| ede0 | 61 72 65 64 2c 20 76 61 6c 75 65 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 53 | ared,.value).<.0)..unix_error("S |
| ee00 | 65 6d 5f 69 6e 69 74 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 50 28 73 65 6d 5f 74 | em_init.error");.}..void.P(sem_t |
| ee20 | 20 2a 73 65 6d 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 73 65 6d 5f 77 61 69 74 28 73 65 6d 29 20 | .*sem)..{.....if.(sem_wait(sem). |
| ee40 | 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 50 20 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a | <.0)..unix_error("P.error");.}.. |
| ee60 | 76 6f 69 64 20 56 28 73 65 6d 5f 74 20 2a 73 65 6d 29 20 0a 7b 0a 20 20 20 20 69 66 20 28 73 65 | void.V(sem_t.*sem)..{.....if.(se |
| ee80 | 6d 5f 70 6f 73 74 28 73 65 6d 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 56 20 | m_post(sem).<.0)..unix_error("V. |
| eea0 | 65 72 72 6f 72 22 29 3b 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | error");.}../******************* |
| eec0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 54 68 65 20 52 69 6f | *********************..*.The.Rio |
| eee0 | 20 70 61 63 6b 61 67 65 20 2d 20 52 6f 62 75 73 74 20 49 2f 4f 20 66 75 6e 63 74 69 6f 6e 73 0a | .package.-.Robust.I/O.functions. |
| ef00 | 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .******************************* |
| ef20 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a 20 2a 20 72 69 6f 5f 72 65 61 64 6e 20 2d 20 52 6f | *********/../*..*.rio_readn.-.Ro |
| ef40 | 62 75 73 74 6c 79 20 72 65 61 64 20 6e 20 62 79 74 65 73 20 28 75 6e 62 75 66 66 65 72 65 64 29 | bustly.read.n.bytes.(unbuffered) |
| ef60 | 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 72 69 6f 5f 72 65 61 64 6e 20 2a 2f 0a 73 73 69 7a | ..*/./*.$begin.rio_readn.*/.ssiz |
| ef80 | 65 5f 74 20 72 69 6f 5f 72 65 61 64 6e 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a 75 73 72 62 | e_t.rio_readn(int.fd,.void.*usrb |
| efa0 | 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 20 0a 7b 0a 20 20 20 20 73 69 7a 65 5f 74 20 6e 6c 65 66 | uf,.size_t.n)..{.....size_t.nlef |
| efc0 | 74 20 3d 20 6e 3b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 6e 72 65 61 64 3b 0a 20 20 20 20 63 68 | t.=.n;.....ssize_t.nread;.....ch |
| efe0 | 61 72 20 2a 62 75 66 70 20 3d 20 75 73 72 62 75 66 3b 0a 0a 20 20 20 20 77 68 69 6c 65 20 28 6e | ar.*bufp.=.usrbuf;......while.(n |
| f000 | 6c 65 66 74 20 3e 20 30 29 20 7b 0a 09 69 66 20 28 28 6e 72 65 61 64 20 3d 20 72 65 61 64 28 66 | left.>.0).{..if.((nread.=.read(f |
| f020 | 64 2c 20 62 75 66 70 2c 20 6e 6c 65 66 74 29 29 20 3c 20 30 29 20 7b 0a 09 20 20 20 20 69 66 20 | d,.bufp,.nleft)).<.0).{......if. |
| f040 | 28 65 72 72 6e 6f 20 3d 3d 20 45 49 4e 54 52 29 20 2f 2a 20 49 6e 74 65 72 72 75 70 74 65 64 20 | (errno.==.EINTR)./*.Interrupted. |
| f060 | 62 79 20 73 69 67 20 68 61 6e 64 6c 65 72 20 72 65 74 75 72 6e 20 2a 2f 0a 09 09 6e 72 65 61 64 | by.sig.handler.return.*/...nread |
| f080 | 20 3d 20 30 3b 20 20 20 20 20 20 2f 2a 20 61 6e 64 20 63 61 6c 6c 20 72 65 61 64 28 29 20 61 67 | .=.0;....../*.and.call.read().ag |
| f0a0 | 61 69 6e 20 2a 2f 0a 09 20 20 20 20 65 6c 73 65 0a 09 09 72 65 74 75 72 6e 20 2d 31 3b 20 20 20 | ain.*/......else...return.-1;... |
| f0c0 | 20 20 20 2f 2a 20 65 72 72 6e 6f 20 73 65 74 20 62 79 20 72 65 61 64 28 29 20 2a 2f 20 0a 09 7d | .../*.errno.set.by.read().*/...} |
| f0e0 | 20 0a 09 65 6c 73 65 20 69 66 20 28 6e 72 65 61 64 20 3d 3d 20 30 29 0a 09 20 20 20 20 62 72 65 | ...else.if.(nread.==.0)......bre |
| f100 | 61 6b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 45 4f 46 20 2a 2f 0a 09 6e 6c 65 66 | ak;............../*.EOF.*/..nlef |
| f120 | 74 20 2d 3d 20 6e 72 65 61 64 3b 0a 09 62 75 66 70 20 2b 3d 20 6e 72 65 61 64 3b 0a 20 20 20 20 | t.-=.nread;..bufp.+=.nread;..... |
| f140 | 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 28 6e 20 2d 20 6e 6c 65 66 74 29 3b 20 20 20 20 20 20 20 | }.....return.(n.-.nleft);....... |
| f160 | 20 20 2f 2a 20 52 65 74 75 72 6e 20 3e 3d 20 30 20 2a 2f 0a 7d 0a 2f 2a 20 24 65 6e 64 20 72 69 | ../*.Return.>=.0.*/.}./*.$end.ri |
| f180 | 6f 5f 72 65 61 64 6e 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 72 69 6f 5f 77 72 69 74 65 6e 20 2d 20 52 | o_readn.*/../*..*.rio_writen.-.R |
| f1a0 | 6f 62 75 73 74 6c 79 20 77 72 69 74 65 20 6e 20 62 79 74 65 73 20 28 75 6e 62 75 66 66 65 72 65 | obustly.write.n.bytes.(unbuffere |
| f1c0 | 64 29 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 72 69 6f 5f 77 72 69 74 65 6e 20 2a 2f 0a 73 | d)..*/./*.$begin.rio_writen.*/.s |
| f1e0 | 73 69 7a 65 5f 74 20 72 69 6f 5f 77 72 69 74 65 6e 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a | size_t.rio_writen(int.fd,.void.* |
| f200 | 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 20 0a 7b 0a 20 20 20 20 73 69 7a 65 5f 74 20 | usrbuf,.size_t.n)..{.....size_t. |
| f220 | 6e 6c 65 66 74 20 3d 20 6e 3b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 6e 77 72 69 74 74 65 6e 3b | nleft.=.n;.....ssize_t.nwritten; |
| f240 | 0a 20 20 20 20 63 68 61 72 20 2a 62 75 66 70 20 3d 20 75 73 72 62 75 66 3b 0a 0a 20 20 20 20 77 | .....char.*bufp.=.usrbuf;......w |
| f260 | 68 69 6c 65 20 28 6e 6c 65 66 74 20 3e 20 30 29 20 7b 0a 09 69 66 20 28 28 6e 77 72 69 74 74 65 | hile.(nleft.>.0).{..if.((nwritte |
| f280 | 6e 20 3d 20 77 72 69 74 65 28 66 64 2c 20 62 75 66 70 2c 20 6e 6c 65 66 74 29 29 20 3c 3d 20 30 | n.=.write(fd,.bufp,.nleft)).<=.0 |
| f2a0 | 29 20 7b 0a 09 20 20 20 20 69 66 20 28 65 72 72 6e 6f 20 3d 3d 20 45 49 4e 54 52 29 20 20 2f 2a | ).{......if.(errno.==.EINTR)../* |
| f2c0 | 20 49 6e 74 65 72 72 75 70 74 65 64 20 62 79 20 73 69 67 20 68 61 6e 64 6c 65 72 20 72 65 74 75 | .Interrupted.by.sig.handler.retu |
| f2e0 | 72 6e 20 2a 2f 0a 09 09 6e 77 72 69 74 74 65 6e 20 3d 20 30 3b 20 20 20 20 2f 2a 20 61 6e 64 20 | rn.*/...nwritten.=.0;..../*.and. |
| f300 | 63 61 6c 6c 20 77 72 69 74 65 28 29 20 61 67 61 69 6e 20 2a 2f 0a 09 20 20 20 20 65 6c 73 65 0a | call.write().again.*/......else. |
| f320 | 09 09 72 65 74 75 72 6e 20 2d 31 3b 20 20 20 20 20 20 20 2f 2a 20 65 72 72 6e 6f 20 73 65 74 20 | ..return.-1;......./*.errno.set. |
| f340 | 62 79 20 77 72 69 74 65 28 29 20 2a 2f 0a 09 7d 0a 09 6e 6c 65 66 74 20 2d 3d 20 6e 77 72 69 74 | by.write().*/..}..nleft.-=.nwrit |
| f360 | 74 65 6e 3b 0a 09 62 75 66 70 20 2b 3d 20 6e 77 72 69 74 74 65 6e 3b 0a 20 20 20 20 7d 0a 20 20 | ten;..bufp.+=.nwritten;.....}... |
| f380 | 20 20 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 72 69 6f 5f 77 72 69 74 65 6e | ..return.n;.}./*.$end.rio_writen |
| f3a0 | 20 2a 2f 0a 0a 0a 2f 2a 20 0a 20 2a 20 72 69 6f 5f 72 65 61 64 20 2d 20 54 68 69 73 20 69 73 20 | .*/.../*...*.rio_read.-.This.is. |
| f3c0 | 61 20 77 72 61 70 70 65 72 20 66 6f 72 20 74 68 65 20 55 6e 69 78 20 72 65 61 64 28 29 20 66 75 | a.wrapper.for.the.Unix.read().fu |
| f3e0 | 6e 63 74 69 6f 6e 20 74 68 61 74 0a 20 2a 20 20 20 20 74 72 61 6e 73 66 65 72 73 20 6d 69 6e 28 | nction.that..*....transfers.min( |
| f400 | 6e 2c 20 72 69 6f 5f 63 6e 74 29 20 62 79 74 65 73 20 66 72 6f 6d 20 61 6e 20 69 6e 74 65 72 6e | n,.rio_cnt).bytes.from.an.intern |
| f420 | 61 6c 20 62 75 66 66 65 72 20 74 6f 20 61 20 75 73 65 72 0a 20 2a 20 20 20 20 62 75 66 66 65 72 | al.buffer.to.a.user..*....buffer |
| f440 | 2c 20 77 68 65 72 65 20 6e 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 | ,.where.n.is.the.number.of.bytes |
| f460 | 20 72 65 71 75 65 73 74 65 64 20 62 79 20 74 68 65 20 75 73 65 72 20 61 6e 64 0a 20 2a 20 20 20 | .requested.by.the.user.and..*... |
| f480 | 20 72 69 6f 5f 63 6e 74 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 75 6e 72 65 61 64 | .rio_cnt.is.the.number.of.unread |
| f4a0 | 20 62 79 74 65 73 20 69 6e 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 66 65 72 2e 20 4f | .bytes.in.the.internal.buffer..O |
| f4c0 | 6e 0a 20 2a 20 20 20 20 65 6e 74 72 79 2c 20 72 69 6f 5f 72 65 61 64 28 29 20 72 65 66 69 6c 6c | n..*....entry,.rio_read().refill |
| f4e0 | 73 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 66 65 72 20 76 69 61 20 61 20 63 61 6c 6c | s.the.internal.buffer.via.a.call |
| f500 | 20 74 6f 0a 20 2a 20 20 20 20 72 65 61 64 28 29 20 69 66 20 74 68 65 20 69 6e 74 65 72 6e 61 6c | .to..*....read().if.the.internal |
| f520 | 20 62 75 66 66 65 72 20 69 73 20 65 6d 70 74 79 2e 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 | .buffer.is.empty...*/./*.$begin. |
| f540 | 72 69 6f 5f 72 65 61 64 20 2a 2f 0a 73 74 61 74 69 63 20 73 73 69 7a 65 5f 74 20 72 69 6f 5f 72 | rio_read.*/.static.ssize_t.rio_r |
| f560 | 65 61 64 28 72 69 6f 5f 74 20 2a 72 70 2c 20 63 68 61 72 20 2a 75 73 72 62 75 66 2c 20 73 69 7a | ead(rio_t.*rp,.char.*usrbuf,.siz |
| f580 | 65 5f 74 20 6e 29 0a 7b 0a 20 20 20 20 69 6e 74 20 63 6e 74 3b 0a 0a 20 20 20 20 77 68 69 6c 65 | e_t.n).{.....int.cnt;......while |
| f5a0 | 20 28 72 70 2d 3e 72 69 6f 5f 63 6e 74 20 3c 3d 20 30 29 20 7b 20 20 2f 2a 20 52 65 66 69 6c 6c | .(rp->rio_cnt.<=.0).{../*.Refill |
| f5c0 | 20 69 66 20 62 75 66 20 69 73 20 65 6d 70 74 79 20 2a 2f 0a 09 72 70 2d 3e 72 69 6f 5f 63 6e 74 | .if.buf.is.empty.*/..rp->rio_cnt |
| f5e0 | 20 3d 20 72 65 61 64 28 72 70 2d 3e 72 69 6f 5f 66 64 2c 20 72 70 2d 3e 72 69 6f 5f 62 75 66 2c | .=.read(rp->rio_fd,.rp->rio_buf, |
| f600 | 20 0a 09 09 09 20 20 20 73 69 7a 65 6f 66 28 72 70 2d 3e 72 69 6f 5f 62 75 66 29 29 3b 0a 09 69 | ........sizeof(rp->rio_buf));..i |
| f620 | 66 20 28 72 70 2d 3e 72 69 6f 5f 63 6e 74 20 3c 20 30 29 20 7b 0a 09 20 20 20 20 69 66 20 28 65 | f.(rp->rio_cnt.<.0).{......if.(e |
| f640 | 72 72 6e 6f 20 21 3d 20 45 49 4e 54 52 29 20 2f 2a 20 49 6e 74 65 72 72 75 70 74 65 64 20 62 79 | rrno.!=.EINTR)./*.Interrupted.by |
| f660 | 20 73 69 67 20 68 61 6e 64 6c 65 72 20 72 65 74 75 72 6e 20 2a 2f 0a 09 09 72 65 74 75 72 6e 20 | .sig.handler.return.*/...return. |
| f680 | 2d 31 3b 0a 09 7d 0a 09 65 6c 73 65 20 69 66 20 28 72 70 2d 3e 72 69 6f 5f 63 6e 74 20 3d 3d 20 | -1;..}..else.if.(rp->rio_cnt.==. |
| f6a0 | 30 29 20 20 2f 2a 20 45 4f 46 20 2a 2f 0a 09 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 09 65 6c | 0)../*.EOF.*/......return.0;..el |
| f6c0 | 73 65 20 0a 09 20 20 20 20 72 70 2d 3e 72 69 6f 5f 62 75 66 70 74 72 20 3d 20 72 70 2d 3e 72 69 | se.......rp->rio_bufptr.=.rp->ri |
| f6e0 | 6f 5f 62 75 66 3b 20 2f 2a 20 52 65 73 65 74 20 62 75 66 66 65 72 20 70 74 72 20 2a 2f 0a 20 20 | o_buf;./*.Reset.buffer.ptr.*/... |
| f700 | 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 43 6f 70 79 20 6d 69 6e 28 6e 2c 20 72 70 2d 3e 72 69 6f 5f | ..}....../*.Copy.min(n,.rp->rio_ |
| f720 | 63 6e 74 29 20 62 79 74 65 73 20 66 72 6f 6d 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 20 74 6f 20 | cnt).bytes.from.internal.buf.to. |
| f740 | 75 73 65 72 20 62 75 66 20 2a 2f 0a 20 20 20 20 63 6e 74 20 3d 20 6e 3b 20 20 20 20 20 20 20 20 | user.buf.*/.....cnt.=.n;........ |
| f760 | 20 20 0a 20 20 20 20 69 66 20 28 72 70 2d 3e 72 69 6f 5f 63 6e 74 20 3c 20 6e 29 20 20 20 0a 09 | .......if.(rp->rio_cnt.<.n)..... |
| f780 | 63 6e 74 20 3d 20 72 70 2d 3e 72 69 6f 5f 63 6e 74 3b 0a 20 20 20 20 6d 65 6d 63 70 79 28 75 73 | cnt.=.rp->rio_cnt;.....memcpy(us |
| f7a0 | 72 62 75 66 2c 20 72 70 2d 3e 72 69 6f 5f 62 75 66 70 74 72 2c 20 63 6e 74 29 3b 0a 20 20 20 20 | rbuf,.rp->rio_bufptr,.cnt);..... |
| f7c0 | 72 70 2d 3e 72 69 6f 5f 62 75 66 70 74 72 20 2b 3d 20 63 6e 74 3b 0a 20 20 20 20 72 70 2d 3e 72 | rp->rio_bufptr.+=.cnt;.....rp->r |
| f7e0 | 69 6f 5f 63 6e 74 20 2d 3d 20 63 6e 74 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 63 6e 74 3b 0a 7d | io_cnt.-=.cnt;.....return.cnt;.} |
| f800 | 0a 2f 2a 20 24 65 6e 64 20 72 69 6f 5f 72 65 61 64 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 72 69 6f 5f | ./*.$end.rio_read.*/../*..*.rio_ |
| f820 | 72 65 61 64 69 6e 69 74 62 20 2d 20 41 73 73 6f 63 69 61 74 65 20 61 20 64 65 73 63 72 69 70 74 | readinitb.-.Associate.a.descript |
| f840 | 6f 72 20 77 69 74 68 20 61 20 72 65 61 64 20 62 75 66 66 65 72 20 61 6e 64 20 72 65 73 65 74 20 | or.with.a.read.buffer.and.reset. |
| f860 | 62 75 66 66 65 72 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 72 69 6f 5f 72 65 61 64 69 6e 69 | buffer..*/./*.$begin.rio_readini |
| f880 | 74 62 20 2a 2f 0a 76 6f 69 64 20 72 69 6f 5f 72 65 61 64 69 6e 69 74 62 28 72 69 6f 5f 74 20 2a | tb.*/.void.rio_readinitb(rio_t.* |
| f8a0 | 72 70 2c 20 69 6e 74 20 66 64 29 20 0a 7b 0a 20 20 20 20 72 70 2d 3e 72 69 6f 5f 66 64 20 3d 20 | rp,.int.fd)..{.....rp->rio_fd.=. |
| f8c0 | 66 64 3b 20 20 0a 20 20 20 20 72 70 2d 3e 72 69 6f 5f 63 6e 74 20 3d 20 30 3b 20 20 0a 20 20 20 | fd;.......rp->rio_cnt.=.0;...... |
| f8e0 | 20 72 70 2d 3e 72 69 6f 5f 62 75 66 70 74 72 20 3d 20 72 70 2d 3e 72 69 6f 5f 62 75 66 3b 0a 7d | .rp->rio_bufptr.=.rp->rio_buf;.} |
| f900 | 0a 2f 2a 20 24 65 6e 64 20 72 69 6f 5f 72 65 61 64 69 6e 69 74 62 20 2a 2f 0a 0a 2f 2a 0a 20 2a | ./*.$end.rio_readinitb.*/../*..* |
| f920 | 20 72 69 6f 5f 72 65 61 64 6e 62 20 2d 20 52 6f 62 75 73 74 6c 79 20 72 65 61 64 20 6e 20 62 79 | .rio_readnb.-.Robustly.read.n.by |
| f940 | 74 65 73 20 28 62 75 66 66 65 72 65 64 29 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 72 69 6f | tes.(buffered)..*/./*.$begin.rio |
| f960 | 5f 72 65 61 64 6e 62 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 72 69 6f 5f 72 65 61 64 6e 62 28 72 69 | _readnb.*/.ssize_t.rio_readnb(ri |
| f980 | 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 | o_t.*rp,.void.*usrbuf,.size_t.n) |
| f9a0 | 20 0a 7b 0a 20 20 20 20 73 69 7a 65 5f 74 20 6e 6c 65 66 74 20 3d 20 6e 3b 0a 20 20 20 20 73 73 | ..{.....size_t.nleft.=.n;.....ss |
| f9c0 | 69 7a 65 5f 74 20 6e 72 65 61 64 3b 0a 20 20 20 20 63 68 61 72 20 2a 62 75 66 70 20 3d 20 75 73 | ize_t.nread;.....char.*bufp.=.us |
| f9e0 | 72 62 75 66 3b 0a 20 20 20 20 0a 20 20 20 20 77 68 69 6c 65 20 28 6e 6c 65 66 74 20 3e 20 30 29 | rbuf;..........while.(nleft.>.0) |
| fa00 | 20 7b 0a 09 69 66 20 28 28 6e 72 65 61 64 20 3d 20 72 69 6f 5f 72 65 61 64 28 72 70 2c 20 62 75 | .{..if.((nread.=.rio_read(rp,.bu |
| fa20 | 66 70 2c 20 6e 6c 65 66 74 29 29 20 3c 20 30 29 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 | fp,.nleft)).<.0)..............re |
| fa40 | 74 75 72 6e 20 2d 31 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 65 72 72 6e 6f 20 73 65 74 20 62 | turn.-1;........../*.errno.set.b |
| fa60 | 79 20 72 65 61 64 28 29 20 2a 2f 20 0a 09 65 6c 73 65 20 69 66 20 28 6e 72 65 61 64 20 3d 3d 20 | y.read().*/...else.if.(nread.==. |
| fa80 | 30 29 0a 09 20 20 20 20 62 72 65 61 6b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 45 | 0)......break;............../*.E |
| faa0 | 4f 46 20 2a 2f 0a 09 6e 6c 65 66 74 20 2d 3d 20 6e 72 65 61 64 3b 0a 09 62 75 66 70 20 2b 3d 20 | OF.*/..nleft.-=.nread;..bufp.+=. |
| fac0 | 6e 72 65 61 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 28 6e 20 2d 20 6e 6c 65 | nread;.....}.....return.(n.-.nle |
| fae0 | 66 74 29 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 72 65 74 75 72 6e 20 3e 3d 20 30 20 2a 2f 0a 7d | ft);........./*.return.>=.0.*/.} |
| fb00 | 0a 2f 2a 20 24 65 6e 64 20 72 69 6f 5f 72 65 61 64 6e 62 20 2a 2f 0a 0a 2f 2a 20 0a 20 2a 20 72 | ./*.$end.rio_readnb.*/../*...*.r |
| fb20 | 69 6f 5f 72 65 61 64 6c 69 6e 65 62 20 2d 20 52 6f 62 75 73 74 6c 79 20 72 65 61 64 20 61 20 74 | io_readlineb.-.Robustly.read.a.t |
| fb40 | 65 78 74 20 6c 69 6e 65 20 28 62 75 66 66 65 72 65 64 29 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 | ext.line.(buffered)..*/./*.$begi |
| fb60 | 6e 20 72 69 6f 5f 72 65 61 64 6c 69 6e 65 62 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 72 69 6f 5f 72 | n.rio_readlineb.*/.ssize_t.rio_r |
| fb80 | 65 61 64 6c 69 6e 65 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 | eadlineb(rio_t.*rp,.void.*usrbuf |
| fba0 | 2c 20 73 69 7a 65 5f 74 20 6d 61 78 6c 65 6e 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 6e 2c 20 72 | ,.size_t.maxlen)..{.....int.n,.r |
| fbc0 | 63 3b 0a 20 20 20 20 63 68 61 72 20 63 2c 20 2a 62 75 66 70 20 3d 20 75 73 72 62 75 66 3b 0a 0a | c;.....char.c,.*bufp.=.usrbuf;.. |
| fbe0 | 20 20 20 20 66 6f 72 20 28 6e 20 3d 20 31 3b 20 6e 20 3c 20 6d 61 78 6c 65 6e 3b 20 6e 2b 2b 29 | ....for.(n.=.1;.n.<.maxlen;.n++) |
| fc00 | 20 7b 20 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 72 69 6f 5f 72 65 61 64 28 72 | .{..........if.((rc.=.rio_read(r |
| fc20 | 70 2c 20 26 63 2c 20 31 29 29 20 3d 3d 20 31 29 20 7b 0a 09 20 20 20 20 2a 62 75 66 70 2b 2b 20 | p,.&c,.1)).==.1).{......*bufp++. |
| fc40 | 3d 20 63 3b 0a 09 20 20 20 20 69 66 20 28 63 20 3d 3d 20 27 5c 6e 27 29 20 7b 0a 20 20 20 20 20 | =.c;......if.(c.==.'\n').{...... |
| fc60 | 20 20 20 20 20 20 20 20 20 20 20 6e 2b 2b 3b 0a 20 20 20 20 20 09 09 62 72 65 61 6b 3b 0a 20 20 | ...........n++;........break;... |
| fc80 | 20 20 20 20 20 20 20 20 20 20 7d 0a 09 7d 20 65 6c 73 65 20 69 66 20 28 72 63 20 3d 3d 20 30 29 | ..........}..}.else.if.(rc.==.0) |
| fca0 | 20 7b 0a 09 20 20 20 20 69 66 20 28 6e 20 3d 3d 20 31 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 20 | .{......if.(n.==.1)...return.0;. |
| fcc0 | 2f 2a 20 45 4f 46 2c 20 6e 6f 20 64 61 74 61 20 72 65 61 64 20 2a 2f 0a 09 20 20 20 20 65 6c 73 | /*.EOF,.no.data.read.*/......els |
| fce0 | 65 0a 09 09 62 72 65 61 6b 3b 20 20 20 20 2f 2a 20 45 4f 46 2c 20 73 6f 6d 65 20 64 61 74 61 20 | e...break;..../*.EOF,.some.data. |
| fd00 | 77 61 73 20 72 65 61 64 20 2a 2f 0a 09 7d 20 65 6c 73 65 0a 09 20 20 20 20 72 65 74 75 72 6e 20 | was.read.*/..}.else......return. |
| fd20 | 2d 31 3b 09 20 20 2f 2a 20 45 72 72 6f 72 20 2a 2f 0a 20 20 20 20 7d 0a 20 20 20 20 2a 62 75 66 | -1;.../*.Error.*/.....}.....*buf |
| fd40 | 70 20 3d 20 30 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 2d 31 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 | p.=.0;.....return.n-1;.}./*.$end |
| fd60 | 20 72 69 6f 5f 72 65 61 64 6c 69 6e 65 62 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .rio_readlineb.*/../************ |
| fd80 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 | **********************..*.Wrappe |
| fda0 | 72 73 20 66 6f 72 20 72 6f 62 75 73 74 20 49 2f 4f 20 72 6f 75 74 69 6e 65 73 0a 20 2a 2a 2a 2a | rs.for.robust.I/O.routines..**** |
| fdc0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a | ******************************/. |
| fde0 | 73 73 69 7a 65 5f 74 20 52 69 6f 5f 72 65 61 64 6e 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a | ssize_t.Rio_readn(int.fd,.void.* |
| fe00 | 70 74 72 2c 20 73 69 7a 65 5f 74 20 6e 62 79 74 65 73 29 20 0a 7b 0a 20 20 20 20 73 73 69 7a 65 | ptr,.size_t.nbytes)..{.....ssize |
| fe20 | 5f 74 20 6e 3b 0a 20 20 0a 20 20 20 20 69 66 20 28 28 6e 20 3d 20 72 69 6f 5f 72 65 61 64 6e 28 | _t.n;........if.((n.=.rio_readn( |
| fe40 | 66 64 2c 20 70 74 72 2c 20 6e 62 79 74 65 73 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 | fd,.ptr,.nbytes)).<.0)..unix_err |
| fe60 | 6f 72 28 22 52 69 6f 5f 72 65 61 64 6e 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 | or("Rio_readn.error");.....retur |
| fe80 | 6e 20 6e 3b 0a 7d 0a 0a 76 6f 69 64 20 52 69 6f 5f 77 72 69 74 65 6e 28 69 6e 74 20 66 64 2c 20 | n.n;.}..void.Rio_writen(int.fd,. |
| fea0 | 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 20 0a 7b 0a 20 20 20 20 69 | void.*usrbuf,.size_t.n)..{.....i |
| fec0 | 66 20 28 72 69 6f 5f 77 72 69 74 65 6e 28 66 64 2c 20 75 73 72 62 75 66 2c 20 6e 29 20 21 3d 20 | f.(rio_writen(fd,.usrbuf,.n).!=. |
| fee0 | 6e 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 52 69 6f 5f 77 72 69 74 65 6e 20 65 72 72 6f 72 | n)..unix_error("Rio_writen.error |
| ff00 | 22 29 3b 0a 7d 0a 0a 76 6f 69 64 20 52 69 6f 5f 72 65 61 64 69 6e 69 74 62 28 72 69 6f 5f 74 20 | ");.}..void.Rio_readinitb(rio_t. |
| ff20 | 2a 72 70 2c 20 69 6e 74 20 66 64 29 0a 7b 0a 20 20 20 20 72 69 6f 5f 72 65 61 64 69 6e 69 74 62 | *rp,.int.fd).{.....rio_readinitb |
| ff40 | 28 72 70 2c 20 66 64 29 3b 0a 7d 20 0a 0a 73 73 69 7a 65 5f 74 20 52 69 6f 5f 72 65 61 64 6e 62 | (rp,.fd);.}...ssize_t.Rio_readnb |
| ff60 | 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 | (rio_t.*rp,.void.*usrbuf,.size_t |
| ff80 | 20 6e 29 20 0a 7b 0a 20 20 20 20 73 73 69 7a 65 5f 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 | .n)..{.....ssize_t.rc;......if.( |
| ffa0 | 28 72 63 20 3d 20 72 69 6f 5f 72 65 61 64 6e 62 28 72 70 2c 20 75 73 72 62 75 66 2c 20 6e 29 29 | (rc.=.rio_readnb(rp,.usrbuf,.n)) |
| ffc0 | 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 52 69 6f 5f 72 65 61 64 6e 62 20 65 72 | .<.0)..unix_error("Rio_readnb.er |
| ffe0 | 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 73 73 69 7a 65 5f 74 | ror");.....return.rc;.}..ssize_t |
| 10000 | 20 52 69 6f 5f 72 65 61 64 6c 69 6e 65 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a | .Rio_readlineb(rio_t.*rp,.void.* |
| 10020 | 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6d 61 78 6c 65 6e 29 20 0a 7b 0a 20 20 20 20 73 73 | usrbuf,.size_t.maxlen)..{.....ss |
| 10040 | 69 7a 65 5f 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 72 69 6f 5f 72 65 61 | ize_t.rc;......if.((rc.=.rio_rea |
| 10060 | 64 6c 69 6e 65 62 28 72 70 2c 20 75 73 72 62 75 66 2c 20 6d 61 78 6c 65 6e 29 29 20 3c 20 30 29 | dlineb(rp,.usrbuf,.maxlen)).<.0) |
| 10080 | 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 52 69 6f 5f 72 65 61 64 6c 69 6e 65 62 20 65 72 72 6f | ..unix_error("Rio_readlineb.erro |
| 100a0 | 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 20 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a | r");.....return.rc;.}.../******* |
| 100c0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 0a 20 2a 20 43 6c | *************************...*.Cl |
| 100e0 | 69 65 6e 74 2f 73 65 72 76 65 72 20 68 65 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 2a | ient/server.helper.functions..** |
| 10100 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a | ******************************/. |
| 10120 | 2f 2a 0a 20 2a 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 20 2d 20 4f 70 65 6e 20 63 6f 6e 6e 65 | /*..*.open_clientfd.-.Open.conne |
| 10140 | 63 74 69 6f 6e 20 74 6f 20 73 65 72 76 65 72 20 61 74 20 3c 68 6f 73 74 6e 61 6d 65 2c 20 70 6f | ction.to.server.at.<hostname,.po |
| 10160 | 72 74 3e 20 61 6e 64 0a 20 2a 20 20 20 20 20 72 65 74 75 72 6e 20 61 20 73 6f 63 6b 65 74 20 64 | rt>.and..*.....return.a.socket.d |
| 10180 | 65 73 63 72 69 70 74 6f 72 20 72 65 61 64 79 20 66 6f 72 20 72 65 61 64 69 6e 67 20 61 6e 64 20 | escriptor.ready.for.reading.and. |
| 101a0 | 77 72 69 74 69 6e 67 2e 20 54 68 69 73 0a 20 2a 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 | writing..This..*.....function.is |
| 101c0 | 20 72 65 65 6e 74 72 61 6e 74 20 61 6e 64 20 70 72 6f 74 6f 63 6f 6c 2d 69 6e 64 65 70 65 6e 64 | .reentrant.and.protocol-independ |
| 101e0 | 65 6e 74 2e 0a 20 2a 0a 20 2a 20 20 20 20 20 4f 6e 20 65 72 72 6f 72 2c 20 72 65 74 75 72 6e 73 | ent...*..*.....On.error,.returns |
| 10200 | 3a 20 0a 20 2a 20 20 20 20 20 20 20 2d 32 20 66 6f 72 20 67 65 74 61 64 64 72 69 6e 66 6f 20 65 | :...*.......-2.for.getaddrinfo.e |
| 10220 | 72 72 6f 72 0a 20 2a 20 20 20 20 20 20 20 2d 31 20 77 69 74 68 20 65 72 72 6e 6f 20 73 65 74 20 | rror..*.......-1.with.errno.set. |
| 10240 | 66 6f 72 20 6f 74 68 65 72 20 65 72 72 6f 72 73 2e 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 | for.other.errors...*/./*.$begin. |
| 10260 | 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 20 2a 2f 0a 69 6e 74 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 | open_clientfd.*/.int.open_client |
| 10280 | 66 64 28 63 68 61 72 20 2a 68 6f 73 74 6e 61 6d 65 2c 20 63 68 61 72 20 2a 70 6f 72 74 29 20 7b | fd(char.*hostname,.char.*port).{ |
| 102a0 | 0a 20 20 20 20 69 6e 74 20 63 6c 69 65 6e 74 66 64 2c 20 72 63 3b 0a 20 20 20 20 73 74 72 75 63 | .....int.clientfd,.rc;.....struc |
| 102c0 | 74 20 61 64 64 72 69 6e 66 6f 20 68 69 6e 74 73 2c 20 2a 6c 69 73 74 70 2c 20 2a 70 3b 0a 0a 20 | t.addrinfo.hints,.*listp,.*p;... |
| 102e0 | 20 20 20 2f 2a 20 47 65 74 20 61 20 6c 69 73 74 20 6f 66 20 70 6f 74 65 6e 74 69 61 6c 20 73 65 | .../*.Get.a.list.of.potential.se |
| 10300 | 72 76 65 72 20 61 64 64 72 65 73 73 65 73 20 2a 2f 0a 20 20 20 20 6d 65 6d 73 65 74 28 26 68 69 | rver.addresses.*/.....memset(&hi |
| 10320 | 6e 74 73 2c 20 30 2c 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f 29 29 | nts,.0,.sizeof(struct.addrinfo)) |
| 10340 | 3b 0a 20 20 20 20 68 69 6e 74 73 2e 61 69 5f 73 6f 63 6b 74 79 70 65 20 3d 20 53 4f 43 4b 5f 53 | ;.....hints.ai_socktype.=.SOCK_S |
| 10360 | 54 52 45 41 4d 3b 20 20 2f 2a 20 4f 70 65 6e 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 2a 2f 0a | TREAM;../*.Open.a.connection.*/. |
| 10380 | 20 20 20 20 68 69 6e 74 73 2e 61 69 5f 66 6c 61 67 73 20 3d 20 41 49 5f 4e 55 4d 45 52 49 43 53 | ....hints.ai_flags.=.AI_NUMERICS |
| 103a0 | 45 52 56 3b 20 20 2f 2a 20 2e 2e 2e 20 75 73 69 6e 67 20 61 20 6e 75 6d 65 72 69 63 20 70 6f 72 | ERV;../*.....using.a.numeric.por |
| 103c0 | 74 20 61 72 67 2e 20 2a 2f 0a 20 20 20 20 68 69 6e 74 73 2e 61 69 5f 66 6c 61 67 73 20 7c 3d 20 | t.arg..*/.....hints.ai_flags.|=. |
| 103e0 | 41 49 5f 41 44 44 52 43 4f 4e 46 49 47 3b 20 20 2f 2a 20 52 65 63 6f 6d 6d 65 6e 64 65 64 20 66 | AI_ADDRCONFIG;../*.Recommended.f |
| 10400 | 6f 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 2a 2f 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 | or.connections.*/.....if.((rc.=. |
| 10420 | 67 65 74 61 64 64 72 69 6e 66 6f 28 68 6f 73 74 6e 61 6d 65 2c 20 70 6f 72 74 2c 20 26 68 69 6e | getaddrinfo(hostname,.port,.&hin |
| 10440 | 74 73 2c 20 26 6c 69 73 74 70 29 29 20 21 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 66 70 72 | ts,.&listp)).!=.0).{.........fpr |
| 10460 | 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 67 65 74 61 64 64 72 69 6e 66 6f 20 66 61 69 6c 65 64 | intf(stderr,."getaddrinfo.failed |
| 10480 | 20 28 25 73 3a 25 73 29 3a 20 25 73 5c 6e 22 2c 20 68 6f 73 74 6e 61 6d 65 2c 20 70 6f 72 74 2c | .(%s:%s):.%s\n",.hostname,.port, |
| 104a0 | 20 67 61 69 5f 73 74 72 65 72 72 6f 72 28 72 63 29 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 | .gai_strerror(rc));.........retu |
| 104c0 | 72 6e 20 2d 32 3b 0a 20 20 20 20 7d 0a 20 20 0a 20 20 20 20 2f 2a 20 57 61 6c 6b 20 74 68 65 20 | rn.-2;.....}......../*.Walk.the. |
| 104e0 | 6c 69 73 74 20 66 6f 72 20 6f 6e 65 20 74 68 61 74 20 77 65 20 63 61 6e 20 73 75 63 63 65 73 73 | list.for.one.that.we.can.success |
| 10500 | 66 75 6c 6c 79 20 63 6f 6e 6e 65 63 74 20 74 6f 20 2a 2f 0a 20 20 20 20 66 6f 72 20 28 70 20 3d | fully.connect.to.*/.....for.(p.= |
| 10520 | 20 6c 69 73 74 70 3b 20 70 3b 20 70 20 3d 20 70 2d 3e 61 69 5f 6e 65 78 74 29 20 7b 0a 20 20 20 | .listp;.p;.p.=.p->ai_next).{.... |
| 10540 | 20 20 20 20 20 2f 2a 20 43 72 65 61 74 65 20 61 20 73 6f 63 6b 65 74 20 64 65 73 63 72 69 70 74 | ...../*.Create.a.socket.descript |
| 10560 | 6f 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 63 6c 69 65 6e 74 66 64 20 3d 20 73 6f | or.*/.........if.((clientfd.=.so |
| 10580 | 63 6b 65 74 28 70 2d 3e 61 69 5f 66 61 6d 69 6c 79 2c 20 70 2d 3e 61 69 5f 73 6f 63 6b 74 79 70 | cket(p->ai_family,.p->ai_socktyp |
| 105a0 | 65 2c 20 70 2d 3e 61 69 5f 70 72 6f 74 6f 63 6f 6c 29 29 20 3c 20 30 29 20 0a 20 20 20 20 20 20 | e,.p->ai_protocol)).<.0)........ |
| 105c0 | 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 20 2f 2a 20 53 6f 63 6b 65 74 20 66 61 69 6c 65 64 | ......continue;./*.Socket.failed |
| 105e0 | 2c 20 74 72 79 20 74 68 65 20 6e 65 78 74 20 2a 2f 0a 0a 20 20 20 20 20 20 20 20 2f 2a 20 43 6f | ,.try.the.next.*/........../*.Co |
| 10600 | 6e 6e 65 63 74 20 74 6f 20 74 68 65 20 73 65 72 76 65 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 | nnect.to.the.server.*/.........i |
| 10620 | 66 20 28 63 6f 6e 6e 65 63 74 28 63 6c 69 65 6e 74 66 64 2c 20 70 2d 3e 61 69 5f 61 64 64 72 2c | f.(connect(clientfd,.p->ai_addr, |
| 10640 | 20 70 2d 3e 61 69 5f 61 64 64 72 6c 65 6e 29 20 21 3d 20 2d 31 29 20 0a 20 20 20 20 20 20 20 20 | .p->ai_addrlen).!=.-1).......... |
| 10660 | 20 20 20 20 62 72 65 61 6b 3b 20 2f 2a 20 53 75 63 63 65 73 73 20 2a 2f 0a 20 20 20 20 20 20 20 | ....break;./*.Success.*/........ |
| 10680 | 20 69 66 20 28 63 6c 6f 73 65 28 63 6c 69 65 6e 74 66 64 29 20 3c 20 30 29 20 7b 20 2f 2a 20 43 | .if.(close(clientfd).<.0).{./*.C |
| 106a0 | 6f 6e 6e 65 63 74 20 66 61 69 6c 65 64 2c 20 74 72 79 20 61 6e 6f 74 68 65 72 20 2a 2f 20 20 2f | onnect.failed,.try.another.*/../ |
| 106c0 | 2f 6c 69 6e 65 3a 6e 65 74 70 3a 6f 70 65 6e 63 6c 69 65 6e 74 66 64 3a 63 6c 6f 73 65 66 64 0a | /line:netp:openclientfd:closefd. |
| 106e0 | 20 20 20 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 6f 70 65 | ............fprintf(stderr,."ope |
| 10700 | 6e 5f 63 6c 69 65 6e 74 66 64 3a 20 63 6c 6f 73 65 20 66 61 69 6c 65 64 3a 20 25 73 5c 6e 22 2c | n_clientfd:.close.failed:.%s\n", |
| 10720 | 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 | .strerror(errno));.............r |
| 10740 | 65 74 75 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 20 20 7d 20 0a 20 20 20 20 7d 20 0a 0a 20 20 20 | eturn.-1;.........}......}...... |
| 10760 | 20 2f 2a 20 43 6c 65 61 6e 20 75 70 20 2a 2f 0a 20 20 20 20 66 72 65 65 61 64 64 72 69 6e 66 6f | ./*.Clean.up.*/.....freeaddrinfo |
| 10780 | 28 6c 69 73 74 70 29 3b 0a 20 20 20 20 69 66 20 28 21 70 29 20 2f 2a 20 41 6c 6c 20 63 6f 6e 6e | (listp);.....if.(!p)./*.All.conn |
| 107a0 | 65 63 74 73 20 66 61 69 6c 65 64 20 2a 2f 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 | ects.failed.*/.........return.-1 |
| 107c0 | 3b 0a 20 20 20 20 65 6c 73 65 20 20 20 20 2f 2a 20 54 68 65 20 6c 61 73 74 20 63 6f 6e 6e 65 63 | ;.....else..../*.The.last.connec |
| 107e0 | 74 20 73 75 63 63 65 65 64 65 64 20 2a 2f 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6c | t.succeeded.*/.........return.cl |
| 10800 | 69 65 6e 74 66 64 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 20 | ientfd;.}./*.$end.open_clientfd. |
| 10820 | 2a 2f 0a 0a 2f 2a 20 20 0a 20 2a 20 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 2d 20 4f 70 65 6e | */../*....*.open_listenfd.-.Open |
| 10840 | 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 65 6e 69 6e 67 20 73 6f 63 6b 65 74 20 6f | .and.return.a.listening.socket.o |
| 10860 | 6e 20 70 6f 72 74 2e 20 54 68 69 73 0a 20 2a 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 | n.port..This..*.....function.is. |
| 10880 | 72 65 65 6e 74 72 61 6e 74 20 61 6e 64 20 70 72 6f 74 6f 63 6f 6c 2d 69 6e 64 65 70 65 6e 64 65 | reentrant.and.protocol-independe |
| 108a0 | 6e 74 2e 0a 20 2a 0a 20 2a 20 20 20 20 20 4f 6e 20 65 72 72 6f 72 2c 20 72 65 74 75 72 6e 73 3a | nt...*..*.....On.error,.returns: |
| 108c0 | 20 0a 20 2a 20 20 20 20 20 20 20 2d 32 20 66 6f 72 20 67 65 74 61 64 64 72 69 6e 66 6f 20 65 72 | ...*.......-2.for.getaddrinfo.er |
| 108e0 | 72 6f 72 0a 20 2a 20 20 20 20 20 20 20 2d 31 20 77 69 74 68 20 65 72 72 6e 6f 20 73 65 74 20 66 | ror..*.......-1.with.errno.set.f |
| 10900 | 6f 72 20 6f 74 68 65 72 20 65 72 72 6f 72 73 2e 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 6f | or.other.errors...*/./*.$begin.o |
| 10920 | 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 2a 2f 0a 69 6e 74 20 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 | pen_listenfd.*/.int.open_listenf |
| 10940 | 64 28 63 68 61 72 20 2a 70 6f 72 74 29 20 0a 7b 0a 20 20 20 20 73 74 72 75 63 74 20 61 64 64 72 | d(char.*port)..{.....struct.addr |
| 10960 | 69 6e 66 6f 20 68 69 6e 74 73 2c 20 2a 6c 69 73 74 70 2c 20 2a 70 3b 0a 20 20 20 20 69 6e 74 20 | info.hints,.*listp,.*p;.....int. |
| 10980 | 6c 69 73 74 65 6e 66 64 2c 20 72 63 2c 20 6f 70 74 76 61 6c 3d 31 3b 0a 0a 20 20 20 20 2f 2a 20 | listenfd,.rc,.optval=1;....../*. |
| 109a0 | 47 65 74 20 61 20 6c 69 73 74 20 6f 66 20 70 6f 74 65 6e 74 69 61 6c 20 73 65 72 76 65 72 20 61 | Get.a.list.of.potential.server.a |
| 109c0 | 64 64 72 65 73 73 65 73 20 2a 2f 0a 20 20 20 20 6d 65 6d 73 65 74 28 26 68 69 6e 74 73 2c 20 30 | ddresses.*/.....memset(&hints,.0 |
| 109e0 | 2c 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f 29 29 3b 0a 20 20 20 20 | ,.sizeof(struct.addrinfo));..... |
| 10a00 | 68 69 6e 74 73 2e 61 69 5f 73 6f 63 6b 74 79 70 65 20 3d 20 53 4f 43 4b 5f 53 54 52 45 41 4d 3b | hints.ai_socktype.=.SOCK_STREAM; |
| 10a20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 41 63 63 65 70 74 20 63 6f 6e 6e 65 63 74 69 6f | ............./*.Accept.connectio |
| 10a40 | 6e 73 20 2a 2f 0a 20 20 20 20 68 69 6e 74 73 2e 61 69 5f 66 6c 61 67 73 20 3d 20 41 49 5f 50 41 | ns.*/.....hints.ai_flags.=.AI_PA |
| 10a60 | 53 53 49 56 45 20 7c 20 41 49 5f 41 44 44 52 43 4f 4e 46 49 47 3b 20 2f 2a 20 2e 2e 2e 20 6f 6e | SSIVE.|.AI_ADDRCONFIG;./*.....on |
| 10a80 | 20 61 6e 79 20 49 50 20 61 64 64 72 65 73 73 20 2a 2f 0a 20 20 20 20 68 69 6e 74 73 2e 61 69 5f | .any.IP.address.*/.....hints.ai_ |
| 10aa0 | 66 6c 61 67 73 20 7c 3d 20 41 49 5f 4e 55 4d 45 52 49 43 53 45 52 56 3b 20 20 20 20 20 20 20 20 | flags.|=.AI_NUMERICSERV;........ |
| 10ac0 | 20 20 20 20 2f 2a 20 2e 2e 2e 20 75 73 69 6e 67 20 70 6f 72 74 20 6e 75 6d 62 65 72 20 2a 2f 0a | ..../*.....using.port.number.*/. |
| 10ae0 | 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 67 65 74 61 64 64 72 69 6e 66 6f 28 4e 55 4c 4c 2c 20 | ....if.((rc.=.getaddrinfo(NULL,. |
| 10b00 | 70 6f 72 74 2c 20 26 68 69 6e 74 73 2c 20 26 6c 69 73 74 70 29 29 20 21 3d 20 30 29 20 7b 0a 20 | port,.&hints,.&listp)).!=.0).{.. |
| 10b20 | 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 67 65 74 61 64 64 72 69 | .......fprintf(stderr,."getaddri |
| 10b40 | 6e 66 6f 20 66 61 69 6c 65 64 20 28 70 6f 72 74 20 25 73 29 3a 20 25 73 5c 6e 22 2c 20 70 6f 72 | nfo.failed.(port.%s):.%s\n",.por |
| 10b60 | 74 2c 20 67 61 69 5f 73 74 72 65 72 72 6f 72 28 72 63 29 29 3b 0a 20 20 20 20 20 20 20 20 72 65 | t,.gai_strerror(rc));.........re |
| 10b80 | 74 75 72 6e 20 2d 32 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 57 61 6c 6b 20 74 68 65 20 | turn.-2;.....}....../*.Walk.the. |
| 10ba0 | 6c 69 73 74 20 66 6f 72 20 6f 6e 65 20 74 68 61 74 20 77 65 20 63 61 6e 20 62 69 6e 64 20 74 6f | list.for.one.that.we.can.bind.to |
| 10bc0 | 20 2a 2f 0a 20 20 20 20 66 6f 72 20 28 70 20 3d 20 6c 69 73 74 70 3b 20 70 3b 20 70 20 3d 20 70 | .*/.....for.(p.=.listp;.p;.p.=.p |
| 10be0 | 2d 3e 61 69 5f 6e 65 78 74 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2a 20 43 72 65 61 74 65 20 61 | ->ai_next).{........./*.Create.a |
| 10c00 | 20 73 6f 63 6b 65 74 20 64 65 73 63 72 69 70 74 6f 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 | .socket.descriptor.*/.........if |
| 10c20 | 20 28 28 6c 69 73 74 65 6e 66 64 20 3d 20 73 6f 63 6b 65 74 28 70 2d 3e 61 69 5f 66 61 6d 69 6c | .((listenfd.=.socket(p->ai_famil |
| 10c40 | 79 2c 20 70 2d 3e 61 69 5f 73 6f 63 6b 74 79 70 65 2c 20 70 2d 3e 61 69 5f 70 72 6f 74 6f 63 6f | y,.p->ai_socktype,.p->ai_protoco |
| 10c60 | 6c 29 29 20 3c 20 30 29 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 20 | l)).<.0)..............continue;. |
| 10c80 | 20 2f 2a 20 53 6f 63 6b 65 74 20 66 61 69 6c 65 64 2c 20 74 72 79 20 74 68 65 20 6e 65 78 74 20 | ./*.Socket.failed,.try.the.next. |
| 10ca0 | 2a 2f 0a 0a 20 20 20 20 20 20 20 20 2f 2a 20 45 6c 69 6d 69 6e 61 74 65 73 20 22 41 64 64 72 65 | */........../*.Eliminates."Addre |
| 10cc0 | 73 73 20 61 6c 72 65 61 64 79 20 69 6e 20 75 73 65 22 20 65 72 72 6f 72 20 66 72 6f 6d 20 62 69 | ss.already.in.use".error.from.bi |
| 10ce0 | 6e 64 20 2a 2f 0a 20 20 20 20 20 20 20 20 73 65 74 73 6f 63 6b 6f 70 74 28 6c 69 73 74 65 6e 66 | nd.*/.........setsockopt(listenf |
| 10d00 | 64 2c 20 53 4f 4c 5f 53 4f 43 4b 45 54 2c 20 53 4f 5f 52 45 55 53 45 41 44 44 52 2c 20 20 20 20 | d,.SOL_SOCKET,.SO_REUSEADDR,.... |
| 10d20 | 2f 2f 6c 69 6e 65 3a 6e 65 74 70 3a 63 73 61 70 70 3a 73 65 74 73 6f 63 6b 6f 70 74 0a 20 20 20 | //line:netp:csapp:setsockopt.... |
| 10d40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a 29 26 6f | ................(const.void.*)&o |
| 10d60 | 70 74 76 61 6c 20 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0a 0a 20 20 20 20 20 20 20 20 2f | ptval.,.sizeof(int));........../ |
| 10d80 | 2a 20 42 69 6e 64 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 20 74 6f 20 74 68 65 20 61 64 64 | *.Bind.the.descriptor.to.the.add |
| 10da0 | 72 65 73 73 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 20 28 62 69 6e 64 28 6c 69 73 74 65 6e 66 | ress.*/.........if.(bind(listenf |
| 10dc0 | 64 2c 20 70 2d 3e 61 69 5f 61 64 64 72 2c 20 70 2d 3e 61 69 5f 61 64 64 72 6c 65 6e 29 20 3d 3d | d,.p->ai_addr,.p->ai_addrlen).== |
| 10de0 | 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 20 2f 2a 20 53 75 63 63 65 73 | .0).............break;./*.Succes |
| 10e00 | 73 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6c 6f 73 65 28 6c 69 73 74 65 6e 66 64 29 | s.*/.........if.(close(listenfd) |
| 10e20 | 20 3c 20 30 29 20 7b 20 2f 2a 20 42 69 6e 64 20 66 61 69 6c 65 64 2c 20 74 72 79 20 74 68 65 20 | .<.0).{./*.Bind.failed,.try.the. |
| 10e40 | 6e 65 78 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 | next.*/.............fprintf(stde |
| 10e60 | 72 72 2c 20 22 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 63 6c 6f 73 65 20 66 61 69 6c 65 64 3a | rr,."open_listenfd.close.failed: |
| 10e80 | 20 25 73 5c 6e 22 2c 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 0a 20 20 20 20 20 20 | .%s\n",.strerror(errno));....... |
| 10ea0 | 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d | ......return.-1;.........}.....} |
| 10ec0 | 0a 0a 0a 20 20 20 20 2f 2a 20 43 6c 65 61 6e 20 75 70 20 2a 2f 0a 20 20 20 20 66 72 65 65 61 64 | ......./*.Clean.up.*/.....freead |
| 10ee0 | 64 72 69 6e 66 6f 28 6c 69 73 74 70 29 3b 0a 20 20 20 20 69 66 20 28 21 70 29 20 2f 2a 20 4e 6f | drinfo(listp);.....if.(!p)./*.No |
| 10f00 | 20 61 64 64 72 65 73 73 20 77 6f 72 6b 65 64 20 2a 2f 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 | .address.worked.*/.........retur |
| 10f20 | 6e 20 2d 31 3b 0a 0a 20 20 20 20 2f 2a 20 4d 61 6b 65 20 69 74 20 61 20 6c 69 73 74 65 6e 69 6e | n.-1;....../*.Make.it.a.listenin |
| 10f40 | 67 20 73 6f 63 6b 65 74 20 72 65 61 64 79 20 74 6f 20 61 63 63 65 70 74 20 63 6f 6e 6e 65 63 74 | g.socket.ready.to.accept.connect |
| 10f60 | 69 6f 6e 20 72 65 71 75 65 73 74 73 20 2a 2f 0a 20 20 20 20 69 66 20 28 6c 69 73 74 65 6e 28 6c | ion.requests.*/.....if.(listen(l |
| 10f80 | 69 73 74 65 6e 66 64 2c 20 4c 49 53 54 45 4e 51 29 20 3c 20 30 29 20 7b 0a 20 20 20 20 20 20 20 | istenfd,.LISTENQ).<.0).{........ |
| 10fa0 | 20 63 6c 6f 73 65 28 6c 69 73 74 65 6e 66 64 29 3b 0a 09 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 | .close(listenfd);..return.-1;... |
| 10fc0 | 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 65 6e 66 64 3b 0a 7d 0a 2f 2a 20 24 65 | ..}.....return.listenfd;.}./*.$e |
| 10fe0 | 6e 64 20 6f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | nd.open_listenfd.*/../********** |
| 11000 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
| 11020 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 72 65 65 6e 74 | **********..*.Wrappers.for.reent |
| 11040 | 72 61 6e 74 20 70 72 6f 74 6f 63 6f 6c 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 68 65 6c 70 65 72 | rant.protocol-independent.helper |
| 11060 | 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | s..***************************** |
| 11080 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 69 6e 74 20 4f 70 65 | ***********************/.int.Ope |
| 110a0 | 6e 5f 63 6c 69 65 6e 74 66 64 28 63 68 61 72 20 2a 68 6f 73 74 6e 61 6d 65 2c 20 63 68 61 72 20 | n_clientfd(char.*hostname,.char. |
| 110c0 | 2a 70 6f 72 74 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 | *port)..{.....int.rc;......if.(( |
| 110e0 | 72 63 20 3d 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 28 68 6f 73 74 6e 61 6d 65 2c 20 70 6f 72 | rc.=.open_clientfd(hostname,.por |
| 11100 | 74 29 29 20 3c 20 30 29 20 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 4f 70 65 6e 5f 63 6c 69 65 | t)).<.0)...unix_error("Open_clie |
| 11120 | 6e 74 66 64 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a | ntfd.error");.....return.rc;.}.. |
| 11140 | 69 6e 74 20 4f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 28 63 68 61 72 20 2a 70 6f 72 74 29 20 0a 7b | int.Open_listenfd(char.*port)..{ |
| 11160 | 0a 20 20 20 20 69 6e 74 20 72 63 3b 0a 0a 20 20 20 20 69 66 20 28 28 72 63 20 3d 20 6f 70 65 6e | .....int.rc;......if.((rc.=.open |
| 11180 | 5f 6c 69 73 74 65 6e 66 64 28 70 6f 72 74 29 29 20 3c 20 30 29 0a 09 75 6e 69 78 5f 65 72 72 6f | _listenfd(port)).<.0)..unix_erro |
| 111a0 | 72 28 22 4f 70 65 6e 5f 6c 69 73 74 65 6e 66 64 20 65 72 72 6f 72 22 29 3b 0a 20 20 20 20 72 65 | r("Open_listenfd.error");.....re |
| 111c0 | 74 75 72 6e 20 72 63 3b 0a 7d 0a 0a 2f 2a 20 24 65 6e 64 20 63 73 61 70 70 2e 63 20 2a 2f 0a 0a | turn.rc;.}../*.$end.csapp.c.*/.. |
| 111e0 | 0a 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11200 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 63 73 61 70 70 2e 68 00 00 00 | proxylab-handout/tiny/csapp.h... |
| 11220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 11280 | 30 30 31 34 37 33 35 00 31 32 36 35 34 37 33 35 33 30 34 00 30 31 34 36 35 30 00 20 30 00 00 00 | 0014735.12654735304.014650..0... |
| 112a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 112c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 112e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11300 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 11320 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 11340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 113a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 113c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 113e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11400 | 2f 2a 0a 20 2a 20 63 73 61 70 70 2e 68 20 2d 20 70 72 6f 74 6f 74 79 70 65 73 20 61 6e 64 20 64 | /*..*.csapp.h.-.prototypes.and.d |
| 11420 | 65 66 69 6e 69 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 43 53 3a 41 50 50 33 65 20 62 6f 6f 6b | efinitions.for.the.CS:APP3e.book |
| 11440 | 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 63 73 61 70 70 2e 68 20 2a 2f 0a 23 69 66 6e 64 65 | ..*/./*.$begin.csapp.h.*/.#ifnde |
| 11460 | 66 20 5f 5f 43 53 41 50 50 5f 48 5f 5f 0a 23 64 65 66 69 6e 65 20 5f 5f 43 53 41 50 50 5f 48 5f | f.__CSAPP_H__.#define.__CSAPP_H_ |
| 11480 | 5f 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c | _..#include.<stdio.h>.#include.< |
| 114a0 | 73 74 64 6c 69 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 61 72 67 2e 68 3e 0a 23 69 | stdlib.h>.#include.<stdarg.h>.#i |
| 114c0 | 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 | nclude.<unistd.h>.#include.<stri |
| 114e0 | 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 63 74 79 70 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 | ng.h>.#include.<ctype.h>.#includ |
| 11500 | 65 20 3c 73 65 74 6a 6d 70 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e | e.<setjmp.h>.#include.<signal.h> |
| 11520 | 0a 23 69 6e 63 6c 75 64 65 20 3c 64 69 72 65 6e 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 | .#include.<dirent.h>.#include.<s |
| 11540 | 79 73 2f 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 74 79 70 65 73 2e 68 | ys/time.h>.#include.<sys/types.h |
| 11560 | 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 61 69 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 | >.#include.<sys/wait.h>.#include |
| 11580 | 20 3c 73 79 73 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 66 63 6e 74 6c 2e 68 3e | .<sys/stat.h>.#include.<fcntl.h> |
| 115a0 | 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 | .#include.<sys/mman.h>.#include. |
| 115c0 | 3c 65 72 72 6e 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6d 61 74 68 2e 68 3e 0a 23 69 6e 63 | <errno.h>.#include.<math.h>.#inc |
| 115e0 | 6c 75 64 65 20 3c 70 74 68 72 65 61 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 65 6d 61 70 | lude.<pthread.h>.#include.<semap |
| 11600 | 68 6f 72 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 73 6f 63 6b 65 74 2e 68 3e 0a | hore.h>.#include.<sys/socket.h>. |
| 11620 | 23 69 6e 63 6c 75 64 65 20 3c 6e 65 74 64 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6e 65 74 | #include.<netdb.h>.#include.<net |
| 11640 | 69 6e 65 74 2f 69 6e 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 72 70 61 2f 69 6e 65 74 2e 68 | inet/in.h>.#include.<arpa/inet.h |
| 11660 | 3e 0a 0a 2f 2a 20 44 65 66 61 75 6c 74 20 66 69 6c 65 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 61 | >../*.Default.file.permissions.a |
| 11680 | 72 65 20 44 45 46 5f 4d 4f 44 45 20 26 20 7e 44 45 46 5f 55 4d 41 53 4b 20 2a 2f 0a 2f 2a 20 24 | re.DEF_MODE.&.~DEF_UMASK.*/./*.$ |
| 116a0 | 62 65 67 69 6e 20 63 72 65 61 74 65 6d 61 73 6b 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20 44 45 46 | begin.createmasks.*/.#define.DEF |
| 116c0 | 5f 4d 4f 44 45 20 20 20 53 5f 49 52 55 53 52 7c 53 5f 49 57 55 53 52 7c 53 5f 49 52 47 52 50 7c | _MODE...S_IRUSR|S_IWUSR|S_IRGRP| |
| 116e0 | 53 5f 49 57 47 52 50 7c 53 5f 49 52 4f 54 48 7c 53 5f 49 57 4f 54 48 0a 23 64 65 66 69 6e 65 20 | S_IWGRP|S_IROTH|S_IWOTH.#define. |
| 11700 | 44 45 46 5f 55 4d 41 53 4b 20 20 53 5f 49 57 47 52 50 7c 53 5f 49 57 4f 54 48 0a 2f 2a 20 24 65 | DEF_UMASK..S_IWGRP|S_IWOTH./*.$e |
| 11720 | 6e 64 20 63 72 65 61 74 65 6d 61 73 6b 73 20 2a 2f 0a 0a 2f 2a 20 53 69 6d 70 6c 69 66 69 65 73 | nd.createmasks.*/../*.Simplifies |
| 11740 | 20 63 61 6c 6c 73 20 74 6f 20 62 69 6e 64 28 29 2c 20 63 6f 6e 6e 65 63 74 28 29 2c 20 61 6e 64 | .calls.to.bind(),.connect(),.and |
| 11760 | 20 61 63 63 65 70 74 28 29 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 73 6f 63 6b 61 64 64 72 64 | .accept().*/./*.$begin.sockaddrd |
| 11780 | 65 66 20 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 53 41 | ef.*/.typedef.struct.sockaddr.SA |
| 117a0 | 3b 0a 2f 2a 20 24 65 6e 64 20 73 6f 63 6b 61 64 64 72 64 65 66 20 2a 2f 0a 0a 2f 2a 20 50 65 72 | ;./*.$end.sockaddrdef.*/../*.Per |
| 117c0 | 73 69 73 74 65 6e 74 20 73 74 61 74 65 20 66 6f 72 20 74 68 65 20 72 6f 62 75 73 74 20 49 2f 4f | sistent.state.for.the.robust.I/O |
| 117e0 | 20 28 52 69 6f 29 20 70 61 63 6b 61 67 65 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 72 69 6f 5f | .(Rio).package.*/./*.$begin.rio_ |
| 11800 | 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 52 49 4f 5f 42 55 46 53 49 5a 45 20 38 31 39 32 0a 74 79 | t.*/.#define.RIO_BUFSIZE.8192.ty |
| 11820 | 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 69 6e 74 20 72 69 6f 5f 66 64 3b 20 20 | pedef.struct.{.....int.rio_fd;.. |
| 11840 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 65 73 63 72 69 70 74 6f 72 20 66 6f 72 20 | ............../*.Descriptor.for. |
| 11860 | 74 68 69 73 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 20 2a 2f 0a 20 20 20 20 69 6e 74 20 72 69 6f | this.internal.buf.*/.....int.rio |
| 11880 | 5f 63 6e 74 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 55 6e 72 65 61 64 20 62 79 | _cnt;.............../*.Unread.by |
| 118a0 | 74 65 73 20 69 6e 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 | tes.in.internal.buf.*/.....char. |
| 118c0 | 2a 72 69 6f 5f 62 75 66 70 74 72 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 65 78 74 20 75 6e | *rio_bufptr;........../*.Next.un |
| 118e0 | 72 65 61 64 20 62 79 74 65 20 69 6e 20 69 6e 74 65 72 6e 61 6c 20 62 75 66 20 2a 2f 0a 20 20 20 | read.byte.in.internal.buf.*/.... |
| 11900 | 20 63 68 61 72 20 72 69 6f 5f 62 75 66 5b 52 49 4f 5f 42 55 46 53 49 5a 45 5d 3b 20 2f 2a 20 49 | .char.rio_buf[RIO_BUFSIZE];./*.I |
| 11920 | 6e 74 65 72 6e 61 6c 20 62 75 66 66 65 72 20 2a 2f 0a 7d 20 72 69 6f 5f 74 3b 0a 2f 2a 20 24 65 | nternal.buffer.*/.}.rio_t;./*.$e |
| 11940 | 6e 64 20 72 69 6f 5f 74 20 2a 2f 0a 0a 2f 2a 20 45 78 74 65 72 6e 61 6c 20 76 61 72 69 61 62 6c | nd.rio_t.*/../*.External.variabl |
| 11960 | 65 73 20 2a 2f 0a 65 78 74 65 72 6e 20 69 6e 74 20 68 5f 65 72 72 6e 6f 3b 20 20 20 20 2f 2a 20 | es.*/.extern.int.h_errno;..../*. |
| 11980 | 44 65 66 69 6e 65 64 20 62 79 20 42 49 4e 44 20 66 6f 72 20 44 4e 53 20 65 72 72 6f 72 73 20 2a | Defined.by.BIND.for.DNS.errors.* |
| 119a0 | 2f 20 0a 65 78 74 65 72 6e 20 63 68 61 72 20 2a 2a 65 6e 76 69 72 6f 6e 3b 20 2f 2a 20 44 65 66 | /..extern.char.**environ;./*.Def |
| 119c0 | 69 6e 65 64 20 62 79 20 6c 69 62 63 20 2a 2f 0a 0a 2f 2a 20 4d 69 73 63 20 63 6f 6e 73 74 61 6e | ined.by.libc.*/../*.Misc.constan |
| 119e0 | 74 73 20 2a 2f 0a 23 64 65 66 69 6e 65 09 4d 41 58 4c 49 4e 45 09 20 38 31 39 32 20 20 2f 2a 20 | ts.*/.#define.MAXLINE..8192../*. |
| 11a00 | 4d 61 78 20 74 65 78 74 20 6c 69 6e 65 20 6c 65 6e 67 74 68 20 2a 2f 0a 23 64 65 66 69 6e 65 20 | Max.text.line.length.*/.#define. |
| 11a20 | 4d 41 58 42 55 46 20 20 20 38 31 39 32 20 20 2f 2a 20 4d 61 78 20 49 2f 4f 20 62 75 66 66 65 72 | MAXBUF...8192../*.Max.I/O.buffer |
| 11a40 | 20 73 69 7a 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4c 49 53 54 45 4e 51 20 20 31 30 32 34 20 20 | .size.*/.#define.LISTENQ..1024.. |
| 11a60 | 2f 2a 20 53 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 6c 69 73 74 65 6e 28 29 20 2a | /*.Second.argument.to.listen().* |
| 11a80 | 2f 0a 0a 2f 2a 20 4f 75 72 20 6f 77 6e 20 65 72 72 6f 72 2d 68 61 6e 64 6c 69 6e 67 20 66 75 6e | /../*.Our.own.error-handling.fun |
| 11aa0 | 63 74 69 6f 6e 73 20 2a 2f 0a 76 6f 69 64 20 75 6e 69 78 5f 65 72 72 6f 72 28 63 68 61 72 20 2a | ctions.*/.void.unix_error(char.* |
| 11ac0 | 6d 73 67 29 3b 0a 76 6f 69 64 20 70 6f 73 69 78 5f 65 72 72 6f 72 28 69 6e 74 20 63 6f 64 65 2c | msg);.void.posix_error(int.code, |
| 11ae0 | 20 63 68 61 72 20 2a 6d 73 67 29 3b 0a 76 6f 69 64 20 64 6e 73 5f 65 72 72 6f 72 28 63 68 61 72 | .char.*msg);.void.dns_error(char |
| 11b00 | 20 2a 6d 73 67 29 3b 0a 76 6f 69 64 20 67 61 69 5f 65 72 72 6f 72 28 69 6e 74 20 63 6f 64 65 2c | .*msg);.void.gai_error(int.code, |
| 11b20 | 20 63 68 61 72 20 2a 6d 73 67 29 3b 0a 76 6f 69 64 20 61 70 70 5f 65 72 72 6f 72 28 63 68 61 72 | .char.*msg);.void.app_error(char |
| 11b40 | 20 2a 6d 73 67 29 3b 0a 0a 2f 2a 20 50 72 6f 63 65 73 73 20 63 6f 6e 74 72 6f 6c 20 77 72 61 70 | .*msg);../*.Process.control.wrap |
| 11b60 | 70 65 72 73 20 2a 2f 0a 70 69 64 5f 74 20 46 6f 72 6b 28 76 6f 69 64 29 3b 0a 76 6f 69 64 20 45 | pers.*/.pid_t.Fork(void);.void.E |
| 11b80 | 78 65 63 76 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 68 61 72 | xecve(const.char.*filename,.char |
| 11ba0 | 20 2a 63 6f 6e 73 74 20 61 72 67 76 5b 5d 2c 20 63 68 61 72 20 2a 63 6f 6e 73 74 20 65 6e 76 70 | .*const.argv[],.char.*const.envp |
| 11bc0 | 5b 5d 29 3b 0a 70 69 64 5f 74 20 57 61 69 74 28 69 6e 74 20 2a 73 74 61 74 75 73 29 3b 0a 70 69 | []);.pid_t.Wait(int.*status);.pi |
| 11be0 | 64 5f 74 20 57 61 69 74 70 69 64 28 70 69 64 5f 74 20 70 69 64 2c 20 69 6e 74 20 2a 69 70 74 72 | d_t.Waitpid(pid_t.pid,.int.*iptr |
| 11c00 | 2c 20 69 6e 74 20 6f 70 74 69 6f 6e 73 29 3b 0a 76 6f 69 64 20 4b 69 6c 6c 28 70 69 64 5f 74 20 | ,.int.options);.void.Kill(pid_t. |
| 11c20 | 70 69 64 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 3b 0a 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 53 | pid,.int.signum);.unsigned.int.S |
| 11c40 | 6c 65 65 70 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 73 65 63 73 29 3b 0a 76 6f 69 64 20 50 61 | leep(unsigned.int.secs);.void.Pa |
| 11c60 | 75 73 65 28 76 6f 69 64 29 3b 0a 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 41 6c 61 72 6d 28 75 6e | use(void);.unsigned.int.Alarm(un |
| 11c80 | 73 69 67 6e 65 64 20 69 6e 74 20 73 65 63 6f 6e 64 73 29 3b 0a 76 6f 69 64 20 53 65 74 70 67 69 | signed.int.seconds);.void.Setpgi |
| 11ca0 | 64 28 70 69 64 5f 74 20 70 69 64 2c 20 70 69 64 5f 74 20 70 67 69 64 29 3b 0a 70 69 64 5f 74 20 | d(pid_t.pid,.pid_t.pgid);.pid_t. |
| 11cc0 | 47 65 74 70 67 72 70 28 29 3b 0a 0a 2f 2a 20 53 69 67 6e 61 6c 20 77 72 61 70 70 65 72 73 20 2a | Getpgrp();../*.Signal.wrappers.* |
| 11ce0 | 2f 0a 74 79 70 65 64 65 66 20 76 6f 69 64 20 68 61 6e 64 6c 65 72 5f 74 28 69 6e 74 29 3b 0a 68 | /.typedef.void.handler_t(int);.h |
| 11d00 | 61 6e 64 6c 65 72 5f 74 20 2a 53 69 67 6e 61 6c 28 69 6e 74 20 73 69 67 6e 75 6d 2c 20 68 61 6e | andler_t.*Signal(int.signum,.han |
| 11d20 | 64 6c 65 72 5f 74 20 2a 68 61 6e 64 6c 65 72 29 3b 0a 76 6f 69 64 20 53 69 67 70 72 6f 63 6d 61 | dler_t.*handler);.void.Sigprocma |
| 11d40 | 73 6b 28 69 6e 74 20 68 6f 77 2c 20 63 6f 6e 73 74 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c | sk(int.how,.const.sigset_t.*set, |
| 11d60 | 20 73 69 67 73 65 74 5f 74 20 2a 6f 6c 64 73 65 74 29 3b 0a 76 6f 69 64 20 53 69 67 65 6d 70 74 | .sigset_t.*oldset);.void.Sigempt |
| 11d80 | 79 73 65 74 28 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 3b 0a 76 6f 69 64 20 53 69 67 66 69 6c | yset(sigset_t.*set);.void.Sigfil |
| 11da0 | 6c 73 65 74 28 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 3b 0a 76 6f 69 64 20 53 69 67 61 64 64 | lset(sigset_t.*set);.void.Sigadd |
| 11dc0 | 73 65 74 28 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 3b 0a | set(sigset_t.*set,.int.signum);. |
| 11de0 | 76 6f 69 64 20 53 69 67 64 65 6c 73 65 74 28 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e | void.Sigdelset(sigset_t.*set,.in |
| 11e00 | 74 20 73 69 67 6e 75 6d 29 3b 0a 69 6e 74 20 53 69 67 69 73 6d 65 6d 62 65 72 28 63 6f 6e 73 74 | t.signum);.int.Sigismember(const |
| 11e20 | 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 2c 20 69 6e 74 20 73 69 67 6e 75 6d 29 3b 0a 69 6e 74 | .sigset_t.*set,.int.signum);.int |
| 11e40 | 20 53 69 67 73 75 73 70 65 6e 64 28 63 6f 6e 73 74 20 73 69 67 73 65 74 5f 74 20 2a 73 65 74 29 | .Sigsuspend(const.sigset_t.*set) |
| 11e60 | 3b 0a 0a 2f 2a 20 53 69 6f 20 28 53 69 67 6e 61 6c 2d 73 61 66 65 20 49 2f 4f 29 20 72 6f 75 74 | ;../*.Sio.(Signal-safe.I/O).rout |
| 11e80 | 69 6e 65 73 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 73 69 6f 5f 70 75 74 73 28 63 68 61 72 20 73 5b | ines.*/.ssize_t.sio_puts(char.s[ |
| 11ea0 | 5d 29 3b 0a 73 73 69 7a 65 5f 74 20 73 69 6f 5f 70 75 74 6c 28 6c 6f 6e 67 20 76 29 3b 0a 76 6f | ]);.ssize_t.sio_putl(long.v);.vo |
| 11ec0 | 69 64 20 73 69 6f 5f 65 72 72 6f 72 28 63 68 61 72 20 73 5b 5d 29 3b 0a 0a 2f 2a 20 53 69 6f 20 | id.sio_error(char.s[]);../*.Sio. |
| 11ee0 | 77 72 61 70 70 65 72 73 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 53 69 6f 5f 70 75 74 73 28 63 68 61 | wrappers.*/.ssize_t.Sio_puts(cha |
| 11f00 | 72 20 73 5b 5d 29 3b 0a 73 73 69 7a 65 5f 74 20 53 69 6f 5f 70 75 74 6c 28 6c 6f 6e 67 20 76 29 | r.s[]);.ssize_t.Sio_putl(long.v) |
| 11f20 | 3b 0a 76 6f 69 64 20 53 69 6f 5f 65 72 72 6f 72 28 63 68 61 72 20 73 5b 5d 29 3b 0a 0a 2f 2a 20 | ;.void.Sio_error(char.s[]);../*. |
| 11f40 | 55 6e 69 78 20 49 2f 4f 20 77 72 61 70 70 65 72 73 20 2a 2f 0a 69 6e 74 20 4f 70 65 6e 28 63 6f | Unix.I/O.wrappers.*/.int.Open(co |
| 11f60 | 6e 73 74 20 63 68 61 72 20 2a 70 61 74 68 6e 61 6d 65 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 6d | nst.char.*pathname,.int.flags,.m |
| 11f80 | 6f 64 65 5f 74 20 6d 6f 64 65 29 3b 0a 73 73 69 7a 65 5f 74 20 52 65 61 64 28 69 6e 74 20 66 64 | ode_t.mode);.ssize_t.Read(int.fd |
| 11fa0 | 2c 20 76 6f 69 64 20 2a 62 75 66 2c 20 73 69 7a 65 5f 74 20 63 6f 75 6e 74 29 3b 0a 73 73 69 7a | ,.void.*buf,.size_t.count);.ssiz |
| 11fc0 | 65 5f 74 20 57 72 69 74 65 28 69 6e 74 20 66 64 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 62 75 | e_t.Write(int.fd,.const.void.*bu |
| 11fe0 | 66 2c 20 73 69 7a 65 5f 74 20 63 6f 75 6e 74 29 3b 0a 6f 66 66 5f 74 20 4c 73 65 65 6b 28 69 6e | f,.size_t.count);.off_t.Lseek(in |
| 12000 | 74 20 66 69 6c 64 65 73 2c 20 6f 66 66 5f 74 20 6f 66 66 73 65 74 2c 20 69 6e 74 20 77 68 65 6e | t.fildes,.off_t.offset,.int.when |
| 12020 | 63 65 29 3b 0a 76 6f 69 64 20 43 6c 6f 73 65 28 69 6e 74 20 66 64 29 3b 0a 69 6e 74 20 53 65 6c | ce);.void.Close(int.fd);.int.Sel |
| 12040 | 65 63 74 28 69 6e 74 20 20 6e 2c 20 66 64 5f 73 65 74 20 2a 72 65 61 64 66 64 73 2c 20 66 64 5f | ect(int..n,.fd_set.*readfds,.fd_ |
| 12060 | 73 65 74 20 2a 77 72 69 74 65 66 64 73 2c 20 66 64 5f 73 65 74 20 2a 65 78 63 65 70 74 66 64 73 | set.*writefds,.fd_set.*exceptfds |
| 12080 | 2c 20 0a 09 20 20 20 73 74 72 75 63 74 20 74 69 6d 65 76 61 6c 20 2a 74 69 6d 65 6f 75 74 29 3b | ,......struct.timeval.*timeout); |
| 120a0 | 0a 69 6e 74 20 44 75 70 32 28 69 6e 74 20 66 64 31 2c 20 69 6e 74 20 66 64 32 29 3b 0a 76 6f 69 | .int.Dup2(int.fd1,.int.fd2);.voi |
| 120c0 | 64 20 53 74 61 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 73 74 72 | d.Stat(const.char.*filename,.str |
| 120e0 | 75 63 74 20 73 74 61 74 20 2a 62 75 66 29 3b 0a 76 6f 69 64 20 46 73 74 61 74 28 69 6e 74 20 66 | uct.stat.*buf);.void.Fstat(int.f |
| 12100 | 64 2c 20 73 74 72 75 63 74 20 73 74 61 74 20 2a 62 75 66 29 20 3b 0a 0a 2f 2a 20 44 69 72 65 63 | d,.struct.stat.*buf).;../*.Direc |
| 12120 | 74 6f 72 79 20 77 72 61 70 70 65 72 73 20 2a 2f 0a 44 49 52 20 2a 4f 70 65 6e 64 69 72 28 63 6f | tory.wrappers.*/.DIR.*Opendir(co |
| 12140 | 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 29 3b 0a 73 74 72 75 63 74 20 64 69 72 65 6e 74 20 2a | nst.char.*name);.struct.dirent.* |
| 12160 | 52 65 61 64 64 69 72 28 44 49 52 20 2a 64 69 72 70 29 3b 0a 69 6e 74 20 43 6c 6f 73 65 64 69 72 | Readdir(DIR.*dirp);.int.Closedir |
| 12180 | 28 44 49 52 20 2a 64 69 72 70 29 3b 0a 0a 2f 2a 20 4d 65 6d 6f 72 79 20 6d 61 70 70 69 6e 67 20 | (DIR.*dirp);../*.Memory.mapping. |
| 121a0 | 77 72 61 70 70 65 72 73 20 2a 2f 0a 76 6f 69 64 20 2a 4d 6d 61 70 28 76 6f 69 64 20 2a 61 64 64 | wrappers.*/.void.*Mmap(void.*add |
| 121c0 | 72 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 2c 20 69 6e 74 20 70 72 6f 74 2c 20 69 6e 74 20 66 6c 61 | r,.size_t.len,.int.prot,.int.fla |
| 121e0 | 67 73 2c 20 69 6e 74 20 66 64 2c 20 6f 66 66 5f 74 20 6f 66 66 73 65 74 29 3b 0a 76 6f 69 64 20 | gs,.int.fd,.off_t.offset);.void. |
| 12200 | 4d 75 6e 6d 61 70 28 76 6f 69 64 20 2a 73 74 61 72 74 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 67 74 | Munmap(void.*start,.size_t.lengt |
| 12220 | 68 29 3b 0a 0a 2f 2a 20 53 74 61 6e 64 61 72 64 20 49 2f 4f 20 77 72 61 70 70 65 72 73 20 2a 2f | h);../*.Standard.I/O.wrappers.*/ |
| 12240 | 0a 76 6f 69 64 20 46 63 6c 6f 73 65 28 46 49 4c 45 20 2a 66 70 29 3b 0a 46 49 4c 45 20 2a 46 64 | .void.Fclose(FILE.*fp);.FILE.*Fd |
| 12260 | 6f 70 65 6e 28 69 6e 74 20 66 64 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 74 79 70 65 29 3b 0a | open(int.fd,.const.char.*type);. |
| 12280 | 63 68 61 72 20 2a 46 67 65 74 73 28 63 68 61 72 20 2a 70 74 72 2c 20 69 6e 74 20 6e 2c 20 46 49 | char.*Fgets(char.*ptr,.int.n,.FI |
| 122a0 | 4c 45 20 2a 73 74 72 65 61 6d 29 3b 0a 46 49 4c 45 20 2a 46 6f 70 65 6e 28 63 6f 6e 73 74 20 63 | LE.*stream);.FILE.*Fopen(const.c |
| 122c0 | 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6d 6f 64 65 29 | har.*filename,.const.char.*mode) |
| 122e0 | 3b 0a 76 6f 69 64 20 46 70 75 74 73 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 74 72 2c 20 46 49 | ;.void.Fputs(const.char.*ptr,.FI |
| 12300 | 4c 45 20 2a 73 74 72 65 61 6d 29 3b 0a 73 69 7a 65 5f 74 20 46 72 65 61 64 28 76 6f 69 64 20 2a | LE.*stream);.size_t.Fread(void.* |
| 12320 | 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c 20 73 69 7a 65 5f 74 20 6e 6d 65 6d 62 2c 20 | ptr,.size_t.size,.size_t.nmemb,. |
| 12340 | 46 49 4c 45 20 2a 73 74 72 65 61 6d 29 3b 0a 76 6f 69 64 20 46 77 72 69 74 65 28 63 6f 6e 73 74 | FILE.*stream);.void.Fwrite(const |
| 12360 | 20 76 6f 69 64 20 2a 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c 20 73 69 7a 65 5f 74 20 | .void.*ptr,.size_t.size,.size_t. |
| 12380 | 6e 6d 65 6d 62 2c 20 46 49 4c 45 20 2a 73 74 72 65 61 6d 29 3b 0a 0a 2f 2a 20 44 79 6e 61 6d 69 | nmemb,.FILE.*stream);../*.Dynami |
| 123a0 | 63 20 73 74 6f 72 61 67 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 77 72 61 70 70 65 72 73 20 2a 2f | c.storage.allocation.wrappers.*/ |
| 123c0 | 0a 76 6f 69 64 20 2a 4d 61 6c 6c 6f 63 28 73 69 7a 65 5f 74 20 73 69 7a 65 29 3b 0a 76 6f 69 64 | .void.*Malloc(size_t.size);.void |
| 123e0 | 20 2a 52 65 61 6c 6c 6f 63 28 76 6f 69 64 20 2a 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 | .*Realloc(void.*ptr,.size_t.size |
| 12400 | 29 3b 0a 76 6f 69 64 20 2a 43 61 6c 6c 6f 63 28 73 69 7a 65 5f 74 20 6e 6d 65 6d 62 2c 20 73 69 | );.void.*Calloc(size_t.nmemb,.si |
| 12420 | 7a 65 5f 74 20 73 69 7a 65 29 3b 0a 76 6f 69 64 20 46 72 65 65 28 76 6f 69 64 20 2a 70 74 72 29 | ze_t.size);.void.Free(void.*ptr) |
| 12440 | 3b 0a 0a 2f 2a 20 53 6f 63 6b 65 74 73 20 69 6e 74 65 72 66 61 63 65 20 77 72 61 70 70 65 72 73 | ;../*.Sockets.interface.wrappers |
| 12460 | 20 2a 2f 0a 69 6e 74 20 53 6f 63 6b 65 74 28 69 6e 74 20 64 6f 6d 61 69 6e 2c 20 69 6e 74 20 74 | .*/.int.Socket(int.domain,.int.t |
| 12480 | 79 70 65 2c 20 69 6e 74 20 70 72 6f 74 6f 63 6f 6c 29 3b 0a 76 6f 69 64 20 53 65 74 73 6f 63 6b | ype,.int.protocol);.void.Setsock |
| 124a0 | 6f 70 74 28 69 6e 74 20 73 2c 20 69 6e 74 20 6c 65 76 65 6c 2c 20 69 6e 74 20 6f 70 74 6e 61 6d | opt(int.s,.int.level,.int.optnam |
| 124c0 | 65 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 6f 70 74 76 61 6c 2c 20 69 6e 74 20 6f 70 74 6c 65 | e,.const.void.*optval,.int.optle |
| 124e0 | 6e 29 3b 0a 76 6f 69 64 20 42 69 6e 64 28 69 6e 74 20 73 6f 63 6b 66 64 2c 20 73 74 72 75 63 74 | n);.void.Bind(int.sockfd,.struct |
| 12500 | 20 73 6f 63 6b 61 64 64 72 20 2a 6d 79 5f 61 64 64 72 2c 20 69 6e 74 20 61 64 64 72 6c 65 6e 29 | .sockaddr.*my_addr,.int.addrlen) |
| 12520 | 3b 0a 76 6f 69 64 20 4c 69 73 74 65 6e 28 69 6e 74 20 73 2c 20 69 6e 74 20 62 61 63 6b 6c 6f 67 | ;.void.Listen(int.s,.int.backlog |
| 12540 | 29 3b 0a 69 6e 74 20 41 63 63 65 70 74 28 69 6e 74 20 73 2c 20 73 74 72 75 63 74 20 73 6f 63 6b | );.int.Accept(int.s,.struct.sock |
| 12560 | 61 64 64 72 20 2a 61 64 64 72 2c 20 73 6f 63 6b 6c 65 6e 5f 74 20 2a 61 64 64 72 6c 65 6e 29 3b | addr.*addr,.socklen_t.*addrlen); |
| 12580 | 0a 76 6f 69 64 20 43 6f 6e 6e 65 63 74 28 69 6e 74 20 73 6f 63 6b 66 64 2c 20 73 74 72 75 63 74 | .void.Connect(int.sockfd,.struct |
| 125a0 | 20 73 6f 63 6b 61 64 64 72 20 2a 73 65 72 76 5f 61 64 64 72 2c 20 69 6e 74 20 61 64 64 72 6c 65 | .sockaddr.*serv_addr,.int.addrle |
| 125c0 | 6e 29 3b 0a 0a 2f 2a 20 50 72 6f 74 6f 63 6f 6c 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 77 72 61 | n);../*.Protocol.independent.wra |
| 125e0 | 70 70 65 72 73 20 2a 2f 0a 76 6f 69 64 20 47 65 74 61 64 64 72 69 6e 66 6f 28 63 6f 6e 73 74 20 | ppers.*/.void.Getaddrinfo(const. |
| 12600 | 63 68 61 72 20 2a 6e 6f 64 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 65 72 76 69 63 65 2c | char.*node,.const.char.*service, |
| 12620 | 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 | ...................const.struct. |
| 12640 | 61 64 64 72 69 6e 66 6f 20 2a 68 69 6e 74 73 2c 20 73 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f | addrinfo.*hints,.struct.addrinfo |
| 12660 | 20 2a 2a 72 65 73 29 3b 0a 76 6f 69 64 20 47 65 74 6e 61 6d 65 69 6e 66 6f 28 63 6f 6e 73 74 20 | .**res);.void.Getnameinfo(const. |
| 12680 | 73 74 72 75 63 74 20 73 6f 63 6b 61 64 64 72 20 2a 73 61 2c 20 73 6f 63 6b 6c 65 6e 5f 74 20 73 | struct.sockaddr.*sa,.socklen_t.s |
| 126a0 | 61 6c 65 6e 2c 20 63 68 61 72 20 2a 68 6f 73 74 2c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | alen,.char.*host,............... |
| 126c0 | 20 20 20 20 73 69 7a 65 5f 74 20 68 6f 73 74 6c 65 6e 2c 20 63 68 61 72 20 2a 73 65 72 76 2c 20 | ....size_t.hostlen,.char.*serv,. |
| 126e0 | 73 69 7a 65 5f 74 20 73 65 72 76 6c 65 6e 2c 20 69 6e 74 20 66 6c 61 67 73 29 3b 0a 76 6f 69 64 | size_t.servlen,.int.flags);.void |
| 12700 | 20 46 72 65 65 61 64 64 72 69 6e 66 6f 28 73 74 72 75 63 74 20 61 64 64 72 69 6e 66 6f 20 2a 72 | .Freeaddrinfo(struct.addrinfo.*r |
| 12720 | 65 73 29 3b 0a 76 6f 69 64 20 49 6e 65 74 5f 6e 74 6f 70 28 69 6e 74 20 61 66 2c 20 63 6f 6e 73 | es);.void.Inet_ntop(int.af,.cons |
| 12740 | 74 20 76 6f 69 64 20 2a 73 72 63 2c 20 63 68 61 72 20 2a 64 73 74 2c 20 73 6f 63 6b 6c 65 6e 5f | t.void.*src,.char.*dst,.socklen_ |
| 12760 | 74 20 73 69 7a 65 29 3b 0a 76 6f 69 64 20 49 6e 65 74 5f 70 74 6f 6e 28 69 6e 74 20 61 66 2c 20 | t.size);.void.Inet_pton(int.af,. |
| 12780 | 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 72 63 2c 20 76 6f 69 64 20 2a 64 73 74 29 3b 20 0a 0a 2f | const.char.*src,.void.*dst);.../ |
| 127a0 | 2a 20 44 4e 53 20 77 72 61 70 70 65 72 73 20 2a 2f 0a 73 74 72 75 63 74 20 68 6f 73 74 65 6e 74 | *.DNS.wrappers.*/.struct.hostent |
| 127c0 | 20 2a 47 65 74 68 6f 73 74 62 79 6e 61 6d 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 | .*Gethostbyname(const.char.*name |
| 127e0 | 29 3b 0a 73 74 72 75 63 74 20 68 6f 73 74 65 6e 74 20 2a 47 65 74 68 6f 73 74 62 79 61 64 64 72 | );.struct.hostent.*Gethostbyaddr |
| 12800 | 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 61 64 64 72 2c 20 69 6e 74 20 6c 65 6e 2c 20 69 6e 74 20 | (const.char.*addr,.int.len,.int. |
| 12820 | 74 79 70 65 29 3b 0a 0a 2f 2a 20 50 74 68 72 65 61 64 73 20 74 68 72 65 61 64 20 63 6f 6e 74 72 | type);../*.Pthreads.thread.contr |
| 12840 | 6f 6c 20 77 72 61 70 70 65 72 73 20 2a 2f 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 63 72 65 61 | ol.wrappers.*/.void.Pthread_crea |
| 12860 | 74 65 28 70 74 68 72 65 61 64 5f 74 20 2a 74 69 64 70 2c 20 70 74 68 72 65 61 64 5f 61 74 74 72 | te(pthread_t.*tidp,.pthread_attr |
| 12880 | 5f 74 20 2a 61 74 74 72 70 2c 20 0a 09 09 20 20 20 20 76 6f 69 64 20 2a 20 28 2a 72 6f 75 74 69 | _t.*attrp,........void.*.(*routi |
| 128a0 | 6e 65 29 28 76 6f 69 64 20 2a 29 2c 20 76 6f 69 64 20 2a 61 72 67 70 29 3b 0a 76 6f 69 64 20 50 | ne)(void.*),.void.*argp);.void.P |
| 128c0 | 74 68 72 65 61 64 5f 6a 6f 69 6e 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 2c 20 76 6f 69 64 20 | thread_join(pthread_t.tid,.void. |
| 128e0 | 2a 2a 74 68 72 65 61 64 5f 72 65 74 75 72 6e 29 3b 0a 76 6f 69 64 20 50 74 68 72 65 61 64 5f 63 | **thread_return);.void.Pthread_c |
| 12900 | 61 6e 63 65 6c 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 29 3b 0a 76 6f 69 64 20 50 74 68 72 65 | ancel(pthread_t.tid);.void.Pthre |
| 12920 | 61 64 5f 64 65 74 61 63 68 28 70 74 68 72 65 61 64 5f 74 20 74 69 64 29 3b 0a 76 6f 69 64 20 50 | ad_detach(pthread_t.tid);.void.P |
| 12940 | 74 68 72 65 61 64 5f 65 78 69 74 28 76 6f 69 64 20 2a 72 65 74 76 61 6c 29 3b 0a 70 74 68 72 65 | thread_exit(void.*retval);.pthre |
| 12960 | 61 64 5f 74 20 50 74 68 72 65 61 64 5f 73 65 6c 66 28 76 6f 69 64 29 3b 0a 76 6f 69 64 20 50 74 | ad_t.Pthread_self(void);.void.Pt |
| 12980 | 68 72 65 61 64 5f 6f 6e 63 65 28 70 74 68 72 65 61 64 5f 6f 6e 63 65 5f 74 20 2a 6f 6e 63 65 5f | hread_once(pthread_once_t.*once_ |
| 129a0 | 63 6f 6e 74 72 6f 6c 2c 20 76 6f 69 64 20 28 2a 69 6e 69 74 5f 66 75 6e 63 74 69 6f 6e 29 28 29 | control,.void.(*init_function)() |
| 129c0 | 29 3b 0a 0a 2f 2a 20 50 4f 53 49 58 20 73 65 6d 61 70 68 6f 72 65 20 77 72 61 70 70 65 72 73 20 | );../*.POSIX.semaphore.wrappers. |
| 129e0 | 2a 2f 0a 76 6f 69 64 20 53 65 6d 5f 69 6e 69 74 28 73 65 6d 5f 74 20 2a 73 65 6d 2c 20 69 6e 74 | */.void.Sem_init(sem_t.*sem,.int |
| 12a00 | 20 70 73 68 61 72 65 64 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 76 61 6c 75 65 29 3b 0a 76 | .pshared,.unsigned.int.value);.v |
| 12a20 | 6f 69 64 20 50 28 73 65 6d 5f 74 20 2a 73 65 6d 29 3b 0a 76 6f 69 64 20 56 28 73 65 6d 5f 74 20 | oid.P(sem_t.*sem);.void.V(sem_t. |
| 12a40 | 2a 73 65 6d 29 3b 0a 0a 2f 2a 20 52 69 6f 20 28 52 6f 62 75 73 74 20 49 2f 4f 29 20 70 61 63 6b | *sem);../*.Rio.(Robust.I/O).pack |
| 12a60 | 61 67 65 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 72 69 6f 5f 72 65 61 64 6e 28 69 6e 74 20 66 64 2c | age.*/.ssize_t.rio_readn(int.fd, |
| 12a80 | 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 73 73 69 7a 65 5f | .void.*usrbuf,.size_t.n);.ssize_ |
| 12aa0 | 74 20 72 69 6f 5f 77 72 69 74 65 6e 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 | t.rio_writen(int.fd,.void.*usrbu |
| 12ac0 | 66 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 76 6f 69 64 20 72 69 6f 5f 72 65 61 64 69 6e 69 74 62 | f,.size_t.n);.void.rio_readinitb |
| 12ae0 | 28 72 69 6f 5f 74 20 2a 72 70 2c 20 69 6e 74 20 66 64 29 3b 20 0a 73 73 69 7a 65 5f 74 09 72 69 | (rio_t.*rp,.int.fd);..ssize_t.ri |
| 12b00 | 6f 5f 72 65 61 64 6e 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 | o_readnb(rio_t.*rp,.void.*usrbuf |
| 12b20 | 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 73 73 69 7a 65 5f 74 09 72 69 6f 5f 72 65 61 64 6c 69 6e | ,.size_t.n);.ssize_t.rio_readlin |
| 12b40 | 65 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 | eb(rio_t.*rp,.void.*usrbuf,.size |
| 12b60 | 5f 74 20 6d 61 78 6c 65 6e 29 3b 0a 0a 2f 2a 20 57 72 61 70 70 65 72 73 20 66 6f 72 20 52 69 6f | _t.maxlen);../*.Wrappers.for.Rio |
| 12b80 | 20 70 61 63 6b 61 67 65 20 2a 2f 0a 73 73 69 7a 65 5f 74 20 52 69 6f 5f 72 65 61 64 6e 28 69 6e | .package.*/.ssize_t.Rio_readn(in |
| 12ba0 | 74 20 66 64 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 76 | t.fd,.void.*usrbuf,.size_t.n);.v |
| 12bc0 | 6f 69 64 20 52 69 6f 5f 77 72 69 74 65 6e 28 69 6e 74 20 66 64 2c 20 76 6f 69 64 20 2a 75 73 72 | oid.Rio_writen(int.fd,.void.*usr |
| 12be0 | 62 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 76 6f 69 64 20 52 69 6f 5f 72 65 61 64 69 6e 69 | buf,.size_t.n);.void.Rio_readini |
| 12c00 | 74 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 69 6e 74 20 66 64 29 3b 20 0a 73 73 69 7a 65 5f 74 20 | tb(rio_t.*rp,.int.fd);..ssize_t. |
| 12c20 | 52 69 6f 5f 72 65 61 64 6e 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 | Rio_readnb(rio_t.*rp,.void.*usrb |
| 12c40 | 75 66 2c 20 73 69 7a 65 5f 74 20 6e 29 3b 0a 73 73 69 7a 65 5f 74 20 52 69 6f 5f 72 65 61 64 6c | uf,.size_t.n);.ssize_t.Rio_readl |
| 12c60 | 69 6e 65 62 28 72 69 6f 5f 74 20 2a 72 70 2c 20 76 6f 69 64 20 2a 75 73 72 62 75 66 2c 20 73 69 | ineb(rio_t.*rp,.void.*usrbuf,.si |
| 12c80 | 7a 65 5f 74 20 6d 61 78 6c 65 6e 29 3b 0a 0a 2f 2a 20 52 65 65 6e 74 72 61 6e 74 20 70 72 6f 74 | ze_t.maxlen);../*.Reentrant.prot |
| 12ca0 | 6f 63 6f 6c 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 63 6c 69 65 6e 74 2f 73 65 72 76 65 72 20 68 | ocol-independent.client/server.h |
| 12cc0 | 65 6c 70 65 72 73 20 2a 2f 0a 69 6e 74 20 6f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 28 63 68 61 72 | elpers.*/.int.open_clientfd(char |
| 12ce0 | 20 2a 68 6f 73 74 6e 61 6d 65 2c 20 63 68 61 72 20 2a 70 6f 72 74 29 3b 0a 69 6e 74 20 6f 70 65 | .*hostname,.char.*port);.int.ope |
| 12d00 | 6e 5f 6c 69 73 74 65 6e 66 64 28 63 68 61 72 20 2a 70 6f 72 74 29 3b 0a 0a 2f 2a 20 57 72 61 70 | n_listenfd(char.*port);../*.Wrap |
| 12d20 | 70 65 72 73 20 66 6f 72 20 72 65 65 6e 74 72 61 6e 74 20 70 72 6f 74 6f 63 6f 6c 2d 69 6e 64 65 | pers.for.reentrant.protocol-inde |
| 12d40 | 70 65 6e 64 65 6e 74 20 63 6c 69 65 6e 74 2f 73 65 72 76 65 72 20 68 65 6c 70 65 72 73 20 2a 2f | pendent.client/server.helpers.*/ |
| 12d60 | 0a 69 6e 74 20 4f 70 65 6e 5f 63 6c 69 65 6e 74 66 64 28 63 68 61 72 20 2a 68 6f 73 74 6e 61 6d | .int.Open_clientfd(char.*hostnam |
| 12d80 | 65 2c 20 63 68 61 72 20 2a 70 6f 72 74 29 3b 0a 69 6e 74 20 4f 70 65 6e 5f 6c 69 73 74 65 6e 66 | e,.char.*port);.int.Open_listenf |
| 12da0 | 64 28 63 68 61 72 20 2a 70 6f 72 74 29 3b 0a 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 5f 5f 43 53 41 | d(char.*port);...#endif./*.__CSA |
| 12dc0 | 50 50 5f 48 5f 5f 20 2a 2f 0a 2f 2a 20 24 65 6e 64 20 63 73 61 70 70 2e 68 20 2a 2f 0a 00 00 00 | PP_H__.*/./*.$end.csapp.h.*/.... |
| 12de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12e00 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 68 6f 6d 65 2e 68 74 6d 6c 00 | proxylab-handout/tiny/home.html. |
| 12e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12e60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 12e80 | 30 30 30 30 31 37 30 00 30 37 34 30 34 34 35 35 32 32 33 00 30 31 35 31 36 37 00 20 30 00 00 00 | 0000170.07404455223.015167..0... |
| 12ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12f00 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 12f20 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 12f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13000 | 3c 68 74 6d 6c 3e 0a 3c 68 65 61 64 3e 3c 74 69 74 6c 65 3e 74 65 73 74 3c 2f 74 69 74 6c 65 3e | <html>.<head><title>test</title> |
| 13020 | 3c 2f 68 65 61 64 3e 0a 3c 62 6f 64 79 3e 20 0a 3c 69 6d 67 20 61 6c 69 67 6e 3d 22 6d 69 64 64 | </head>.<body>..<img.align="midd |
| 13040 | 6c 65 22 20 73 72 63 3d 22 67 6f 64 7a 69 6c 6c 61 2e 67 69 66 22 3e 0a 44 61 76 65 20 4f 27 48 | le".src="godzilla.gif">.Dave.O'H |
| 13060 | 61 6c 6c 61 72 6f 6e 0a 3c 2f 62 6f 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 0a 00 00 00 00 00 00 00 00 | allaron.</body>.</html>......... |
| 13080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 130a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 130c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 130e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 131a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 131c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 131e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13200 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 67 6f 64 7a 69 6c 6c 61 2e 67 | proxylab-handout/tiny/godzilla.g |
| 13220 | 69 66 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | if.............................. |
| 13240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 13280 | 30 30 32 37 35 37 33 00 30 37 34 30 34 34 35 35 32 32 33 00 30 31 35 36 36 35 00 20 30 00 00 00 | 0027573.07404455223.015665..0... |
| 132a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 132c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 132e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13300 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 13320 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 13340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 133a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 133c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 133e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13400 | 47 49 46 38 37 61 64 00 7d 00 f7 00 00 18 12 23 a2 bd 59 4a 70 30 6f 9b 58 df cf 69 b1 7c 43 90 | GIF87ad.}......#..YJp0o.X..i.|C. |
| 13420 | 49 2f 87 bb af 30 41 1c 60 90 bd 5b 23 2a 45 66 7f c8 96 b2 c5 d4 cd 89 43 6d b1 6f 91 d8 9a 53 | I/...0A.`..[#*Ef........Cm.o...S |
| 13440 | 2d 34 54 db c5 c8 a5 c5 d1 5a 86 43 7a 83 b9 f9 f0 ec a4 60 30 41 86 a9 e0 e9 ea ce 8d 54 35 5a | -4T......Z.Cz......`0A.......T5Z |
| 13460 | 2c d9 a8 c1 cb 82 aa cc c4 69 ec dc 73 74 39 1b 62 b2 e8 e7 da da e7 ee f4 2b 2b 1f 6e 94 83 d8 | ,........i..st9.b........++.n... |
| 13480 | e3 e0 5a 7d 6d a2 56 86 31 50 67 8d 9a ce 76 66 9f d2 47 3d 90 bb e7 46 69 59 74 a4 d5 e1 5b 40 | ..Z}m.V.1Pg...vf..G=...FiYt...[@ |
| 134a0 | ec be 62 72 31 58 c1 30 30 6a b5 a0 de 51 89 d4 94 82 54 4a 2d bb 90 d6 3d 18 1b 63 53 80 d2 bd | ..br1X.00j...Q....TJ-...=..cS... |
| 134c0 | e5 ed e1 da a3 b5 89 a2 cd ec e0 a9 93 a8 ac ac b5 c7 9e 9d 5f 5f 46 30 33 e4 73 4d ae 68 b7 c8 | ....................__F03.sM.h.. |
| 134e0 | a0 e1 b9 71 64 75 7d d5 79 6f 6c 8e 84 81 4e 3f 67 59 72 c6 e4 7e af e3 6c 9e 9d 24 34 c4 44 82 | ...qdu}.yol...N?gYr..~..l..$4.D. |
| 13500 | 65 5b 58 8d 47 4e 8e 89 53 98 a2 e4 a8 b5 e4 5d 85 d6 e4 e4 b0 55 49 4f f6 e8 bf 5b 1e 40 b7 39 | e[X.GN..S......].....UIO...[.@.9 |
| 13520 | 76 ef 90 b9 f1 a9 c1 bd ad 8c 44 2f 56 c2 bd d0 cf c1 9f a6 9b 99 72 68 c9 ec 7f 7d d8 d1 9c eb | v.........D/V.........rh...}.... |
| 13540 | ba 8f 84 92 e4 33 33 28 df cb ef 61 57 b9 bb ca e9 c3 73 9b 8f 87 c1 ac a0 6a ab b1 d0 67 5e 2e | .....33(...aW.....s......j...g^. |
| 13560 | 9e 59 bb 39 47 3c cb 86 7d b2 de f1 f0 e4 b7 ec 84 4c c2 7d cb f0 e6 ea 1d 20 59 35 0c 1c d1 db | .Y.9G<..}........L.}......Y5.... |
| 13580 | f4 3c 14 2e ee d3 a4 37 5a 4d d3 47 65 e1 5b 66 a4 25 5c e2 7b d4 f1 a4 db e4 71 7b 22 1e 26 8b | .<.....7ZM.Ge.[f.%\.{.....q{".&. |
| 135a0 | bb d9 67 2c 31 36 3d 5d 7f 40 43 85 b3 e8 f6 ef f5 c7 39 53 47 1f 24 57 49 74 97 97 60 62 93 dd | ..g,16=].@C.......9SG.$WIt..`b.. |
| 135c0 | 65 28 4e 4e 3a 3a 9b 50 5a 2f 2b 3c 46 1d 38 68 9b c8 4e 70 8d cf da d5 e1 cd d0 ad cd d9 9a ab | e(NN::.PZ/+<F.8h..Np............ |
| 135e0 | 6f 3c 64 37 e0 b0 ca f2 c0 d2 a9 8c c8 82 6f ab 98 c7 eb 50 73 63 7d 3a 62 86 a9 9c 5b 54 34 c5 | o<d7..........o....Psc}:b...[T4. |
| 13600 | 97 dd 6e 5d 8d ac be 95 aa d5 ee be d0 a7 84 7a 74 99 8f 8c 6f 65 60 ae bd e9 6d 9f e4 72 6b 36 | ..n]...........zt...oe`...m..rk6 |
| 13620 | c7 d5 f0 bb ae 56 cd 6c 42 82 b1 d3 30 3d 3a 77 16 29 83 41 8d 93 77 b5 f3 ee fa 5a 78 9d e4 ed | .....V.lB...0=:w.).A..w....Zx... |
| 13640 | ef 73 35 39 7d ab e4 f4 ea ee 27 22 32 ed de ed ee 94 8f a0 a5 cf b8 50 63 00 00 00 00 00 00 00 | .s59}.....'"2..........Pc....... |
| 13660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 136a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 136c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 136e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 2c 00 00 00 00 64 00 7d 00 00 08 fe 00 25 ac 99 d0 60 8d | .............,....d.}.....%...`. |
| 13720 | a2 36 3e de d0 d2 14 eb 4d 8b 35 9d 34 f9 00 f3 46 91 a1 37 3e 0c 85 32 01 46 91 8f 2a 86 14 69 | .6>.....M.5.4...F..7>..2.F..*..i |
| 13740 | 5a e3 43 13 a6 0c 19 50 6d c2 a2 eb 44 14 39 49 4e a0 91 64 e3 80 8b 4b 4b e4 44 21 75 e2 06 ac | Z.C....Pm...D.9IN..d...KK.D!u... |
| 13760 | 5a 51 5c c8 71 e1 e7 c4 2a 9e 88 92 d4 da 20 47 4e 84 01 25 9c 06 ad 45 e9 06 a9 56 07 5c bd 31 | ZQ\.q...*......GN..%...E...V.\.1 |
| 13780 | 64 22 cd 9a 35 69 32 7c a2 f2 06 0c 0e 2a 55 de a8 e8 45 d6 d0 99 4f 6b aa 7c 8a 55 05 a1 ab 0a | d"..5i2|.....*U...E...Ok.|.U.... |
| 137a0 | 90 84 e1 58 63 48 d8 1a 61 6d 42 55 79 51 a5 13 98 35 25 48 34 5a 81 05 8b 0e 47 92 1a 91 40 33 | ...XcH..amBUyQ...5%H4Z....G...@3 |
| 137c0 | a4 d5 12 19 58 86 a0 91 d3 e8 cb 90 cc 8d fc 4c 62 73 69 48 a3 1c 24 86 dc 68 54 cb d1 21 ce 72 | ....X..........LbsiH..$..hT..!.r |
| 137e0 | 86 28 38 64 20 51 94 52 89 b0 4c 58 b3 03 a4 b0 58 a9 54 80 12 f6 06 94 0a 4d 0c 3e b5 48 7b e6 | .(8d.Q.R..LX....X.T......M.>.H{. |
| 13800 | 85 30 2a 2a 26 18 a9 52 65 a4 26 ea 6b da 18 aa c2 a0 ca 1a 23 38 5a fe b8 d2 21 e7 44 92 25 4a | .0**&..Re.&.k.......#8Z...!.D.%J |
| 13820 | 4e 25 91 92 08 e6 e7 5a bf 5a 45 88 9d 33 33 1a 34 7c e4 50 a2 74 21 a6 1c 2c 24 90 b0 4a 14 68 | N%.....Z.ZE..33.4|.P.t!..,$..J.h |
| 13840 | 50 e5 c0 14 5f a0 e1 02 25 05 c6 86 05 1a 94 7c b2 43 26 24 b9 12 57 1b 2f a8 80 0b 24 67 e0 52 | P..._...%......|.C&$..W./...$g.R |
| 13860 | 85 86 55 b8 f2 89 5f b8 58 d2 82 5a cb 55 14 8a 78 6b b9 02 52 15 3b ac f1 86 26 b5 14 42 82 24 | ..U..._.X..Z.U..xk..R.;...&..B.$ |
| 13880 | 50 74 32 41 66 b5 3c 50 44 13 03 50 b2 c1 7d 08 a0 70 cb 09 4a 48 22 09 16 5f 90 f0 cb 2f 43 48 | Pt2Af.<PD..P..}..p..JH".._.../CH |
| 138a0 | f2 59 7b 94 b4 82 c5 0d 5f 24 92 88 28 8f 48 11 89 1c ab 0d e1 07 2f 37 0c 21 c6 1a b1 70 b5 47 | .Y{....._$..(.H......./7.!...p.G |
| 138c0 | 6f 40 50 01 c6 27 67 a8 00 c4 19 4c a8 40 05 24 17 e1 40 dd 27 15 a9 d0 82 22 48 bc 51 45 78 2d | o@P..'g....L.@.$..@.'...."H.QEx- |
| 138e0 | 28 f7 8a 0a 20 7d 52 41 2b a8 25 01 c6 04 2a 34 d6 88 02 51 a0 90 08 2c 0a fc 82 46 23 ac 9c 80 | (....}RA+.%...*4...Q...,...F#... |
| 13900 | 05 a6 0e 34 32 05 1a bf c4 46 c9 14 9f 4c 32 c5 21 bc 70 b0 40 2d fe b5 28 f0 c5 0d 51 38 80 05 | ...42....F...L2.!.p.@-..(...Q8.. |
| 13920 | 25 24 7c b1 8a 18 27 34 22 07 2b 20 f1 96 4a 2c 90 e0 72 18 2e c2 ec 20 0c 2e a1 50 91 c0 2b 72 | %$|...'4".+...J,..r........P..+r |
| 13940 | f5 52 05 18 d5 b9 e2 0a 15 8a 7c b5 06 15 16 be 41 45 2a 15 5c 62 48 18 03 f6 08 04 0a 42 b4 d2 | .R........|.....AE*.\bH......B.. |
| 13960 | 6b 22 ad 94 b0 4a 2b 43 3c a9 e9 25 03 7e 21 c9 17 a5 20 30 93 02 47 38 71 45 03 58 d4 d2 88 0d | k"...J+C<..%.~!....0..G8qE.X.... |
| 13980 | ac c8 d2 ca 24 51 1c e2 c0 1b 49 94 22 e5 10 42 24 d2 48 22 53 c8 b0 1b 18 16 5a d2 17 12 2a 7c | ....$Q....I."..B$.H"S.....Z...*| |
| 139a0 | 52 84 a0 7c 16 2a 8c 22 2a 20 a4 82 30 a9 bc c9 5b 15 8a 54 e0 9d 0a 5f 59 82 05 0a 99 48 e0 c8 | R..|.*."*...0...[..T..._Y....H.. |
| 139c0 | 2a 14 96 a0 04 2f 39 70 72 87 14 ab 4c 21 c9 0d bf 34 02 c7 21 32 b8 a4 80 24 9c 0c b1 9f 02 1c | *..../9pr...L!...4..!2...$...... |
| 139e0 | 64 92 84 1c b0 7c f1 df 0e 0d 18 91 01 18 22 1c 21 8c 1b 58 1c 81 02 28 60 94 c1 4a 14 32 90 f9 | d....|........".!..X...(`..J.2.. |
| 13a00 | c6 0e c0 34 00 18 75 a0 04 da 06 15 81 56 81 96 26 54 6c e7 ca fe 5a 54 b4 c0 16 b5 2a 18 b2 b7 | ...4..u......V..&Tl...ZT....*... |
| 13a20 | 22 69 55 91 04 1b 42 b8 f0 05 0a 9f ac 30 f5 4c c3 04 d1 4a 12 8e 38 9d c8 28 2b c8 01 87 14 51 | "iU...B......0.L...J..8..(+....Q |
| 13a40 | 70 22 05 2f 2e d4 a2 a4 0b 25 70 72 c8 10 47 88 31 4c 27 49 38 a1 44 07 42 e8 9c c8 27 62 60 c2 | p"./.....%pr..G.1L'I8.D.B...'b`. |
| 13a60 | 80 08 99 24 7b 4a 14 43 b0 81 89 10 0a 00 31 c1 88 72 a9 90 97 30 1c 83 61 8a 21 9a 18 21 4c 0b | ...${J.C......1..r...0..a.!..!L. |
| 13a80 | 54 84 f7 8a 30 76 bf 21 e3 27 84 7f 12 4a 1a 1d ac b1 42 96 6c b0 c1 c0 25 89 e8 30 4a 09 ba 38 | T...0v.!.'...J....B.l...%..0J..8 |
| 13aa0 | f0 c8 10 72 44 d2 01 18 51 b4 d2 5e 2d bc b8 31 8c 03 51 30 20 c9 2f 8d f9 21 87 01 58 10 43 10 | ...rD...Q..^-..1..Q0../..!..X.C. |
| 13ac0 | 68 a6 02 36 70 c0 5d f8 13 05 29 32 31 01 52 74 22 13 a4 e0 1d 10 84 20 07 5e a0 a0 08 86 d0 90 | h..6p.]...)21.Rt"........^...... |
| 13ae0 | b5 da 50 85 09 58 42 05 a1 50 41 e0 34 b1 15 4d 7c 82 3a 9a f0 9b 30 0e 23 97 58 4c 60 15 25 10 | ..P..XB..PA.4..M|.:...0.#.XL`.%. |
| 13b00 | 81 26 80 70 03 19 74 61 02 ac 68 c5 11 8e 50 83 4d fc c0 01 fe ab 88 c4 00 80 10 06 17 88 e1 14 | .&.p..ta..h...P.M............... |
| 13b20 | 87 b8 57 23 70 71 1b 07 88 80 5c 43 38 44 2d 72 40 09 c6 a5 0e 08 0d 90 c5 2a 9a b2 a4 28 60 41 | ..W#pq....\C8D-r@........*...(`A |
| 13b40 | 12 ad 80 03 16 02 10 14 2f 4a a2 16 7e 58 82 a2 da d0 31 e2 e0 40 7b ae 88 83 22 7a d1 06 b5 54 | ......../J..~X....1..@{..."z...T |
| 13b60 | e0 0d 22 7a 43 2a de f0 89 5e bc 21 14 bd 88 c2 1c 44 10 00 29 84 81 03 5e e8 44 07 4a 20 94 c5 | .."zC*...^.!.....D..)...^.D.J... |
| 13b80 | b1 21 08 51 38 c1 14 6c d3 0a 14 04 e1 11 89 f8 42 2b 24 31 13 03 58 6d 09 86 50 42 12 26 c1 0a | .!.Q8..l........B+$1..Xm..PB.&.. |
| 13ba0 | 08 61 61 07 13 70 c3 d9 10 21 09 12 50 62 09 06 f0 83 66 a2 c4 09 39 28 a0 14 02 50 80 66 1a d1 | .aa..p...!..Pb....f...9(...P.f.. |
| 13bc0 | 88 56 d4 85 14 19 64 82 1f e7 56 b8 ea bc e1 0c b4 b0 9b 22 26 80 03 87 f8 05 3a 78 90 c0 12 5a | .V....d...V........"&.....:x...Z |
| 13be0 | c1 8a 39 a0 22 09 a4 d8 c4 02 dc 10 89 56 38 02 05 49 a8 d4 14 a2 30 0c c6 60 21 9c a5 50 00 27 | ..9."........V8..I....0..`!..P.' |
| 13c00 | 6a 71 88 77 35 62 08 51 7a 00 07 6c f0 05 31 48 81 03 22 fe b0 41 09 fc 40 09 05 b0 66 08 6e 28 | jq.w5b.Qz..l..1H.."..A..@...f.n( |
| 13c20 | 05 1a 6e 90 08 58 a1 21 07 07 55 0c 1a 4a 31 84 37 a5 a5 08 23 43 16 24 c6 40 bd 0a c0 05 07 2a | ..n..X.!..U..J1.7...#C.$.@.....* |
| 13c40 | 48 c5 b5 14 d1 02 15 bc 80 16 b1 e8 c4 03 4a 80 c5 4d 38 0a 16 aa 90 c4 11 92 80 85 55 60 e1 01 | H.............J..M8.........U`.. |
| 13c60 | 43 f8 84 14 94 e0 82 1c 38 40 05 42 d8 84 12 5a 21 0a 0a 34 22 7e 94 38 e3 3b a3 e0 84 4c 64 02 | C.......8@.B...Z!..4"~.8.;...Ld. |
| 13c80 | 0f 0d 10 44 15 4e a0 33 02 0d c1 11 50 ba 01 25 fc f7 85 2b c9 21 35 ec 63 1f 25 7a 35 04 15 20 | ...D.N.3....P..%...+.!5.c.%z5... |
| 13ca0 | 61 85 1d 9b c0 1b 90 60 08 43 20 e1 15 af 50 8e 22 f8 f4 97 df 44 10 15 6c c8 40 03 e6 00 2f 31 | a......`.C....P."....D..l.@.../1 |
| 13cc0 | b0 62 09 68 d0 02 07 94 b0 8a 39 30 20 05 81 c0 84 12 12 31 04 5e 98 e2 14 36 38 42 a7 0e 91 88 | .b.h......90.......1.^...68B.... |
| 13ce0 | 55 80 82 77 4b 50 8d 24 1c d0 81 30 48 21 0d 22 10 81 1c d0 80 82 47 9c a2 15 52 10 43 12 a5 44 | U..wKP.$...0H!."......G...R.C..D |
| 13d00 | aa 5f 38 89 93 92 59 1a 1f 60 41 58 17 90 a2 63 2d 13 fe 86 8b 54 60 ad c0 19 e2 13 87 a2 ce 1b | ._8...Y..`AX...c-....T`......... |
| 13d20 | 26 b0 84 0e b8 60 0a 1a 60 c0 cc 30 21 06 14 28 01 93 2e b0 81 2f 50 21 06 25 cc 01 0d 93 10 82 | &....`..`..0!..(...../P!.%...... |
| 13d40 | 28 4a 41 09 29 34 e0 08 73 50 c2 10 b8 30 07 09 bc e1 0b 53 08 a7 0b b0 80 99 55 40 e1 0d 28 10 | (JA.)4..sP...0.....S......U@..(. |
| 13d60 | 46 10 58 e1 99 06 1c 80 93 11 48 c1 10 14 d3 4a 12 44 80 12 8d 78 d8 19 87 10 09 2c bc 13 17 e2 | F.X.......H....J.D...x.....,.... |
| 13d80 | 69 83 25 68 d1 86 0a f4 42 18 18 7c 03 0e 5c 51 28 ea a8 80 16 b5 92 83 16 94 a0 04 5c 00 a1 13 | i.%h....B..|..\Q(...........\... |
| 13da0 | ac f0 83 14 58 d1 14 46 e0 21 13 28 f0 c2 25 e4 80 c8 ff 34 e2 01 6e 90 00 10 a2 90 04 4b 3e e0 | ....X..F.!.(..%....4..n......K>. |
| 13dc0 | 07 ab 70 03 e7 1e c0 06 07 b0 82 0d 9b d8 22 16 5c 60 b4 44 48 a2 14 54 94 04 1f 22 f3 ce 0b b8 | ..p...........".\`.DH..T...".... |
| 13de0 | 32 05 0a 98 0c 02 92 8c 86 d4 34 02 0d 22 04 89 5a de 00 09 15 d8 31 99 38 30 04 18 3a c0 80 08 | 2.........4.."..Z.....1.80..:... |
| 13e00 | b6 02 86 a1 25 ec 30 58 81 88 99 95 e0 0b 8d f8 83 fe 2f 82 b0 8a 9d b6 62 02 9b 68 c5 02 a4 00 | ....%.0X........../.....b..h.... |
| 13e20 | 06 15 b8 14 0a 40 40 c5 5f 19 f0 80 20 24 d2 09 12 78 c0 1c c2 00 84 80 65 46 12 fa c1 6f 2b f5 | .....@@._....$...x......eF...o+. |
| 13e40 | d3 14 57 4a a2 10 a5 7a 27 1f f8 70 08 d3 0e e1 0b 94 90 43 2f 3e c1 80 0c 16 41 13 86 e0 60 a8 | ..WJ...z'..p.......C/>....A...`. |
| 13e60 | d9 02 09 4b 88 01 08 3a 58 05 0a 24 90 04 06 e0 01 0f 60 c0 42 0d 30 71 84 5a 04 02 0c 4e 53 42 | ...K...:X..$......`.B.0q.Z...NSB |
| 13e80 | 1b 68 50 82 44 b8 00 0e 0a 90 c1 0b fc f0 00 4c 18 02 08 ac d0 40 09 58 21 86 49 00 e1 0d 0d 58 | .hP.D..........L.....@.X!.I....X |
| 13ea0 | 45 27 4e 1d 05 4c 04 61 0a 70 28 ac a4 66 c2 9a 1c f8 ea 10 10 e2 8c 93 a0 e4 6d 3e b4 a2 54 11 | E'N..L.a.p(..f............m>..T. |
| 13ec0 | b8 c1 66 c7 f2 02 8b b6 c0 58 69 e1 e0 87 84 a1 04 21 1c e0 08 1d 00 02 29 bc c0 86 1d 98 c0 07 | ..f......Xi......!......)....... |
| 13ee0 | 49 a8 1d 2e d0 f0 00 20 48 82 12 0e 38 01 28 30 93 82 aa ac 40 01 2f d5 69 05 56 a0 84 01 c8 21 | I.......H...8.(0....@./.i.V....! |
| 13f00 | bd 73 10 42 5f bd db 86 47 74 60 13 09 db 0c 1f fe 7e a1 cb fb 84 06 0e 8d a8 84 2c f5 c0 07 a7 | .s.B_...Gt`......~.........,.... |
| 13f20 | fd 82 0f 95 e0 85 2e 25 21 83 78 49 49 13 7b a3 4e 05 fc 04 51 43 7c ac 05 0c b0 c1 12 1c 21 07 | .......%!.xII.{.N...QC|.......!. |
| 13f40 | 31 f8 a1 15 9d 38 00 22 c4 90 09 53 7c e1 04 27 70 c4 1b 0e f0 05 05 94 60 34 9e c2 82 02 da 10 | 1....8."...S|..'p.......`4...... |
| 13f60 | b6 53 b0 a2 04 47 70 80 1f ce e8 00 da 29 81 bc 99 10 01 28 1e a1 04 20 54 a0 07 a5 f0 2f 7c 18 | .S...Gp......).....(....T..../|. |
| 13f80 | 0a 4f 4a 4c d1 b4 a9 71 b4 92 26 73 08 2c 88 38 34 23 8f 02 09 db f0 1d 20 5c 44 18 96 38 a1 08 | .OJL...q..&s.,.84#.......\D..8.. |
| 13fa0 | 1b 10 85 20 e8 00 17 a7 10 03 0f 1e 70 1b 28 b0 c2 0b 24 38 c4 03 56 b0 82 03 20 dc 10 ac 38 c2 | ............p.(...$8..V.......8. |
| 13fc0 | 25 12 2e 85 1e c0 82 03 c2 c0 c2 30 de 10 05 b4 71 20 08 07 f8 fa 30 d6 c0 00 2c 8a 41 0c 51 90 | %..........0....q.....0...,.A.Q. |
| 13fe0 | 52 55 87 26 07 3e 8c 57 01 f8 c9 41 21 86 2f 55 12 ac b6 16 37 58 c2 30 4a 90 4e 81 4e b1 11 6d | RU.&.>.W...A!./U....7X.0J.N.N..m |
| 14000 | a0 45 2f 8a 80 bd 37 14 c1 07 54 f0 50 2f 2c fe 41 d3 c3 49 00 6c 7e 10 e8 28 8a c0 5e 3f 7c e1 | .E/...7...T.P/,.A..I.l~..(..^?|. |
| 14020 | 10 85 16 ae 14 de 20 02 43 e8 40 09 a2 68 82 25 18 20 35 07 00 e1 88 aa c7 c4 03 c4 e0 05 28 68 | ........C.@..h.%..5...........(h |
| 14040 | 19 13 40 b0 02 7e 90 1b 72 50 0a 32 20 07 53 10 09 43 c0 4a f3 45 09 43 50 0a 7c 40 02 f2 45 02 | ..@..~..rP.2..S..C.J.E.CP.|@..E. |
| 14060 | f0 61 72 bc e0 05 4a 10 01 4a 40 5d 92 41 09 b4 60 05 88 d2 6e 82 c3 27 ae 80 03 c2 40 0a 0a a0 | .ar...J..J@].A..`...n..'....@... |
| 14080 | 00 53 80 74 be 60 08 9b 85 70 69 20 06 0e 43 09 8c 10 05 89 90 09 4a 00 05 bb d0 65 42 c0 18 87 | .S.t.`...pi...C.......J....eB... |
| 140a0 | f1 03 26 c0 0a 1d 70 04 0d 30 0c c3 c0 00 19 50 02 60 c0 01 3a 72 38 ac a0 03 5e 54 55 4b a0 6e | ..&...p..0.....P.`..:r8...^TUK.n |
| 140c0 | ac 05 4f 4f a6 07 0e 88 05 57 c5 4b 4f a2 07 fb 33 19 ec 73 03 a0 40 29 12 33 04 20 21 06 20 61 | ..OO.....W.KO...3..s..@).3..!..a |
| 140e0 | 09 dc 62 09 7e 61 08 dc 97 03 52 f0 05 a3 00 04 aa 50 02 37 30 1f 25 d0 01 3b e0 07 f9 95 09 68 | ..b.~a....R......P.70.%..;.....h |
| 14100 | 03 0c 13 e0 04 19 e0 05 28 70 00 a0 60 1b fe 94 97 4a 0d a0 04 52 10 79 0f c0 0a 6d 20 01 99 60 | ........(p..`....J...R.y...m...` |
| 14120 | 04 a4 30 05 42 c0 00 6d 17 3f 2e d5 14 8d e0 5f bf f0 63 95 40 09 78 47 02 7a a0 19 7c 50 08 95 | ..0.B..m.?....._..c.@.xG.z..|P.. |
| 14140 | 93 64 9b 85 69 b5 b0 29 8d 40 09 15 e0 17 a6 a0 3d 55 80 0b bd 10 0a 9f 60 08 2e 20 09 06 20 04 | .d..i..).@......=U......`....... |
| 14160 | 0f f0 00 47 e8 06 61 00 15 5f 70 04 bb c0 0a 5a 07 6d 03 20 05 86 f0 02 28 40 55 07 68 2f 58 b0 | ...G..a.._p....Z.m......(@U.h/X. |
| 14180 | 04 89 30 01 49 30 04 b8 70 7b 73 00 04 3f b0 06 16 b6 09 6d 00 0a 95 a8 2e a9 d6 0a 7e 70 08 b8 | ..0.I0..p{s..?.....m........~p.. |
| 141a0 | 12 54 ec 83 06 85 40 09 85 d0 64 8d f0 0b 08 d0 72 29 70 03 92 90 03 ab f1 0b 94 a0 57 8f f0 05 | .T....@...d.....r)p.........W... |
| 141c0 | 22 44 3d 86 b0 17 ae f0 1c 6b 70 06 93 f0 1f 58 10 06 6b 10 05 0f 70 89 4d 50 02 bc 20 09 4a f0 | "D=......kp....X..k...p.MP....J. |
| 141e0 | 00 8f 10 44 26 60 3f 40 f0 65 97 b6 04 3a a0 85 0e e0 08 2f e1 00 5f 20 05 9f b0 7f 40 50 05 87 | ...D&`?@.e...:...../.._.....@P.. |
| 14200 | 74 7b 93 70 15 a3 01 04 87 18 5e 72 30 fe 85 fb 81 05 23 17 20 2e 07 4f 9b 82 2b fa e8 4a f9 91 | t{.p......^r0.....#....O..+..J.. |
| 14220 | 1a 60 50 02 91 e0 07 7e f2 09 c6 73 42 19 74 18 1c c0 00 52 e0 00 72 20 03 98 90 04 2a 00 0b 49 | .`P....~...sB.t....R..r.....*..I |
| 14240 | c0 01 53 c8 07 0a 20 0a 0a 80 08 ba f0 58 8b 14 05 a8 e6 00 98 50 05 a7 50 0a 29 00 0b f3 e1 00 | ..S..........X.......P..P.)..... |
| 14260 | 38 c0 00 a8 00 04 13 79 7f 36 00 0c 99 e0 05 ad e0 00 49 40 61 16 37 0a fe 93 69 37 50 5a 4f a2 | 8......y.6........I@a.7...i7PZO. |
| 14280 | 18 7e b0 29 12 78 08 ef 38 04 5a 60 35 5a 20 55 43 10 05 70 c0 09 70 c0 00 9d b6 56 cd 28 5b 54 | .~.).x..8.Z`5Z.UC..p..p....V.([T |
| 142a0 | 70 00 86 30 0c a4 e4 00 0e 90 06 49 00 95 40 60 02 3d 80 05 a5 d0 24 fa a8 03 41 80 0b 4e 00 06 | p..0.......I..@`.=....$...A..N.. |
| 142c0 | 36 50 04 49 99 09 40 c0 66 57 85 06 0b a3 67 49 b0 7f 1c 20 01 1d 10 1d 4a b0 02 73 b0 57 1c 30 | 6P.I..@.fW....gI........J..s.W.0 |
| 142e0 | 01 42 30 04 97 80 69 a4 e2 4a 24 50 08 f9 45 02 57 f5 0b 1b e0 24 92 31 19 b9 92 08 9b 31 0a c3 | .B0...i..J$P..E.W....$.1.....1.. |
| 14300 | a0 6e f1 e8 22 b8 f0 06 b1 f0 46 76 fe a3 02 16 e1 00 4b 20 06 89 c0 06 0d 80 0a 97 a8 04 5e f0 | .n..".....Fv......K...........^. |
| 14320 | 06 65 30 07 9d 20 04 a1 78 02 68 38 01 19 d0 01 19 00 04 32 40 0a a4 90 02 4a 41 02 32 50 05 cc | .e0.....x.h8.......2@....JA.2P.. |
| 14340 | 36 00 32 d0 0a 40 d0 01 92 f8 65 3a e0 00 9d 20 02 98 40 0a aa 90 04 99 e4 19 01 92 03 f1 e2 6d | 6.2..@....e:......@............m |
| 14360 | ac a1 07 7a 40 19 a6 85 1a eb e3 7b 52 a0 00 ab 10 77 94 e1 85 20 f1 02 68 41 1d 77 b0 03 7d e1 | ...z@......{R....w......hA.w..}. |
| 14380 | 0a 61 80 05 3f 80 07 2b c0 0a c0 c0 69 38 84 05 4a c0 0a 57 30 00 24 e0 00 15 70 04 73 69 9e 07 | .a..?..+....i8..J..W0.$...p.si.. |
| 143a0 | f0 00 32 a0 6e b9 d1 08 17 70 48 3d ca 00 98 20 0c 0c 60 9b 07 a0 04 6c b0 02 6d 80 8c 2e 61 2f | ..2.n....pH=......`....l..m...a/ |
| 143c0 | b8 32 50 8d 40 2b 43 10 01 fa 68 5a 68 c0 72 f0 a1 29 79 80 05 a6 85 5f ec 58 08 15 f8 4e 80 21 | .2P.@+C...hZh.r..)y...._.X...N.! |
| 143e0 | 2d 6d c0 16 82 42 16 69 b0 03 36 90 04 99 80 0a 5e c0 00 60 20 89 99 90 19 e1 87 06 0b 50 04 8e | -m...B.i..6.....^..`.........P.. |
| 14400 | 39 9b 4a e0 08 98 21 06 55 55 0b fe b1 f1 08 0f f4 28 35 c3 35 4a 60 14 6d d7 30 52 b0 00 f6 72 | 9.J...!.UU.......(5.5J`.m.0R...r |
| 14420 | 70 f2 38 92 36 30 07 93 70 25 a4 c2 20 37 90 03 39 10 46 9c ca 63 ec f8 24 08 a5 1a 89 40 50 91 | p.8.60..p%...7..9.F..c..$....@P. |
| 14440 | d0 41 24 78 06 15 e0 0a 1c a3 09 60 c0 06 40 70 3b be d0 05 78 20 02 1c 80 09 9d 70 02 08 07 3c | .A$x.......`..@p;...x......p...< |
| 14460 | 89 20 01 5e 00 0c bb c2 0a 8e c0 0a b6 32 2b 89 10 09 ce c5 03 41 e8 06 2e 25 3c a0 90 46 bc 10 | ...^.........2+......A...%<..F.. |
| 14480 | 30 56 13 05 be 92 7b aa 31 0c 3f 60 03 12 20 04 fe e5 24 b8 d2 08 11 40 19 92 80 00 bf a0 07 ab | 0V....{.1.?`......$....@........ |
| 144a0 | 81 55 24 80 00 99 f1 1f 7c 40 09 52 f6 06 0e f1 06 46 10 12 82 f2 02 05 5a 07 78 c0 03 b9 30 02 | .U$.....|@.R.....F......Z.x...0. |
| 144c0 | 2b 80 07 3b b0 4f 91 90 a4 4a 90 09 7d c0 03 a4 e0 09 ef d5 6a 51 a0 03 93 00 40 a8 c3 03 2d a0 | +..;.O...J..}.......jQ....@...-. |
| 144e0 | 03 a7 d6 06 62 70 04 8f 90 19 0a d0 8a 43 90 03 56 23 07 89 30 0c 6e c0 0b 0e 00 0c 66 f0 03 42 | ....bp.......C..V#..0.n.....f..B |
| 14500 | f0 30 01 a2 85 4d c6 07 ad a8 fe 29 9d 88 06 87 70 08 65 02 4f 02 33 13 bd 80 28 75 61 08 12 50 | .0...M.....)....p.e.O.3...(ua..P |
| 14520 | 04 ae 90 10 55 d0 0b cb 86 05 a4 f0 03 23 d0 00 0e 84 07 51 90 82 11 81 ab 83 60 02 0c 00 0c 4a | ....U........#.....Q......`....J |
| 14540 | 40 0a 52 40 01 4b d0 18 ad 80 69 62 60 03 9f c0 0a 49 a0 03 4b 30 4e b7 31 04 d7 f8 45 57 2a 07 | @.R@.K....ib`....I..K0N.1...EW*. |
| 14560 | 87 10 06 b4 06 0b 43 90 09 3c f0 03 ad 10 1b 9a e2 24 f1 f2 8e ad 34 04 a7 d0 72 72 a0 8f 7b f7 | ......C..<.......$....4...rr..{. |
| 14580 | 64 61 da 37 a6 40 05 07 26 0c 80 64 04 32 82 0b 9a f0 08 37 e0 00 a0 b0 0a 3d 40 0b 8f 20 04 29 | da.7.@..&..d.2.....7.....=@....) |
| 145a0 | 50 08 0f f8 05 40 00 0c 98 50 02 28 00 06 27 f0 05 20 70 1f 6e e0 00 b5 90 1a 28 70 0a 2a c0 3b | P....@...P.(..'...p.n.....(p.*.; |
| 145c0 | 51 80 50 94 21 07 92 10 09 92 40 01 4f c0 08 b5 80 69 8d b0 0a b5 31 04 3f e0 09 aa e0 25 0f 72 | Q.P.!.....@.O....i....1.?....%.r |
| 145e0 | 50 10 fa 64 ab bb 01 0a 70 03 f6 18 8f fa 38 45 7c c0 85 66 e8 0a 9d 00 12 d7 d1 1c d0 53 56 46 | P..d....p.....8E|..f.........SVF |
| 14600 | b0 62 c7 7a 03 2e 90 2e 99 fe 41 8a 39 e0 02 28 c0 03 c9 42 79 10 22 a9 94 90 6d 43 90 02 98 41 | .b.z......A.9..(...By."...mC...A |
| 14620 | 01 68 30 1f a6 71 80 bc 30 1a 8c 38 0b 06 50 34 f0 31 04 05 10 91 41 50 06 8f 60 be a5 e8 24 9b | .h0..q..0..8..P4.1....AP..`...$. |
| 14640 | 72 1f 94 90 03 b1 51 08 28 2b 8a 4d 36 19 ad 84 06 6f e1 0a 8a 80 0b b1 e0 8d 2f f3 0a cb f1 09 | r.....Q.(+.M6....o......../..... |
| 14660 | 9a a0 14 56 a5 13 72 20 7c 37 9a 09 26 b0 06 b7 27 8a b5 80 05 11 c0 09 fb 08 26 94 10 40 32 40 | ...V..r.|7..&...'.........&..@2@ |
| 14680 | 09 10 28 86 52 70 04 4d 00 0c be b0 0b 06 70 01 17 f0 4e 93 d1 08 33 30 05 43 c0 01 61 90 04 92 | ..(.Rp.M......p...N...30.C..a... |
| 146a0 | 81 1a 45 c3 07 20 50 c1 be 72 1f 96 36 05 24 07 07 37 50 09 fc 93 03 9a 42 3d 27 43 07 23 f2 15 | ..E...P..r..6.$..7P.....B='C.#.. |
| 146c0 | 00 a6 15 65 c5 03 40 50 aa 05 f0 00 3e 76 2f 93 c1 07 60 00 04 40 a0 c3 9f d1 ae e6 07 21 41 55 | ...e..@P....>v/...`..@.......!AU |
| 146e0 | 0a ef a4 09 68 86 06 5f c0 90 36 e0 09 78 e0 0b 78 00 0b 06 30 0b 07 97 1a 4b 13 45 3f 70 1e 91 | ....h.._..6..x..x...0....K.E?p.. |
| 14700 | e1 4a 62 fa 24 0e 18 20 fe c2 99 03 7c e0 07 51 70 23 87 d0 08 23 e7 6d d7 f2 02 a1 80 03 37 2b | .Jb.$.......|..Qp#...#.m......7+ |
| 14720 | 0c 38 07 af 71 f1 06 78 60 02 41 20 07 52 10 03 88 2b 09 b4 1b 2a c2 40 52 89 a0 29 09 a2 18 09 | .8..q..x`.A..R...+...*.@R..).... |
| 14740 | 92 85 72 40 15 53 e8 07 81 20 03 2e 00 05 62 00 06 5d e0 0b 8b e0 05 52 60 a9 fd 95 08 32 d7 08 | ..r@.S........b..].....R`....2.. |
| 14760 | 8c 60 03 dc ea 5f 9b 92 b1 9a f2 0b bd 0b 4f bb 98 03 63 a7 19 f3 28 09 a1 78 03 a7 d4 1d 71 71 | .`..._........O...c...(..x....qq |
| 14780 | 06 c4 01 b8 e2 21 28 32 32 05 92 73 08 66 40 04 9d a1 04 1a 00 01 7f 60 02 1c 71 02 72 80 00 9f | .....!(22..s.f@........`..q.r... |
| 147a0 | a1 03 32 c0 3b 0a e0 02 3a 00 31 ac 70 69 4a f0 03 2b 86 3f 2d 25 01 bb c0 03 51 f0 04 47 73 08 | ..2.;...:.1.piJ..+.?-%....Q..Gs. |
| 147c0 | c3 10 19 89 c0 01 0f c0 09 9b 02 2b 4e 12 ba 45 43 19 7b f9 0b bb 08 7c 91 50 c8 2f a8 19 55 37 | ...........+N..EC.{....|.P./..U7 |
| 147e0 | af c2 00 17 dc 11 0b 54 a0 1d ac da 0b 6b d0 03 a7 d0 09 52 90 04 47 00 01 1a f0 19 b3 20 01 9d | .......T.....k.....R..G......... |
| 14800 | 60 02 f9 b4 24 7c b0 fe 01 93 d0 00 c0 90 06 38 40 ad 0a 60 7e fe 25 1b 0d c3 01 aa 70 04 43 b0 | `...$|.........8@..`~.%.....p.C. |
| 14820 | 04 92 90 04 ab 20 02 0e 00 7c 43 50 aa 93 d0 09 3f 10 05 a1 cb 4b 4a 5c 34 40 c6 1a 9e f8 bd df | .........|CP....?....KJ\4@...... |
| 14840 | cb 64 ad c0 64 f9 45 05 d0 ec 2d b4 20 af 5b 61 0a 46 00 48 a6 20 09 d7 69 70 91 60 06 31 30 0b | .d..d.E...-...[a.F.H....ip.`.10. |
| 14860 | 58 c0 0a 9d 26 06 08 7a 09 6f 60 03 52 30 ac cf 46 0a 52 12 01 11 60 1a 4d e0 02 71 37 04 ac 60 | X...&..z.o`.R0..F.R...`.M..q7..` |
| 14880 | 8d 58 22 04 bf e9 77 bf 79 03 52 00 05 5e 70 02 43 20 30 c2 a7 93 4d d6 8a 36 22 c3 24 f0 45 56 | .X"...w.y.R..^p.C.0...M..6".$.EV |
| 148a0 | 53 09 af 01 b3 0a 30 8f bf e0 07 07 81 16 6c 54 28 dc e9 aa 69 b1 03 49 20 02 af 9c 08 94 f0 03 | S.....0.......lT(...i..I........ |
| 148c0 | b5 29 02 40 f0 00 3b f0 00 65 20 04 9f a0 0a 0b 20 09 88 90 1e 99 eb 34 10 52 0b 1b 09 2f 43 d0 | .).@..;..e.............4.R.../C. |
| 148e0 | 06 3a 30 76 97 d0 77 35 e4 45 02 03 71 b1 61 7c f7 68 5a ab d1 08 88 f0 64 c3 67 c2 08 05 07 5a | .:0v..w5.E..q.a|.hZ.....d.g....Z |
| 14900 | 10 3a 66 7c 1f 93 fe c6 4b f8 b5 5b 66 21 18 7c d2 0b c3 51 05 48 50 05 69 60 03 99 d5 09 89 b0 | .:f|....K..[f!.|...Q.HP.i`...... |
| 14920 | 74 41 20 06 3e 80 09 12 60 03 0c d0 09 3b 40 03 60 da 64 52 b2 04 03 e0 5f 55 c1 24 5f 80 08 0a | tA..>...`....;@.`.dR...._U.$_... |
| 14940 | 70 55 37 02 4f 1e eb 34 2e 00 71 ba 34 8d af 38 e0 5a ea 9c 24 80 1a 36 82 1a 5b d8 14 4f 62 db | pU7.O..4..q.4..8.Z..$..6..[..Ob. |
| 14960 | 01 92 2b 9c 4a 09 69 9a 16 7e 84 31 54 70 1d cf 23 38 0d a0 09 19 b0 03 a7 dd 09 4b 50 29 1c f0 | ..+.J.i..~.1Tp..#8.........KP).. |
| 14980 | 09 2e 30 01 60 d0 00 57 20 05 7a 30 6e 5f 50 39 39 a1 24 05 b5 ce 4f 52 08 7a b0 34 51 a0 05 a3 | ..0.`..W..z0n_P99.$...OR.z.4Q... |
| 149a0 | 20 00 f9 a5 80 ca 0c 4f b0 c0 0b 26 0c 0b 0a e5 6d 82 2c bc a6 b1 4b 07 b5 a5 a4 78 23 85 a0 00 | .......O...&....m.,...K....x#... |
| 149c0 | 11 00 02 08 25 07 b7 b5 15 b1 28 23 6b a3 2c 9a 40 42 86 20 4f 40 60 04 4a b0 29 5a 12 4e 91 10 | ....%.....(#k.,.@B..O@`.J.)Z.N.. |
| 149e0 | 06 a0 e0 00 ad d0 0a b0 c0 07 d7 2b 09 e7 b8 59 43 06 98 a6 f5 4e 95 c0 cc 3e 26 03 3e 56 26 89 | ...........+...YC....N...>&.>V&. |
| 14a00 | c0 50 58 a0 98 fe 4c 32 09 9b 4a 8a f3 45 8a 9b 61 23 05 52 9c 07 be a5 bf 50 0a 42 4e 02 12 d3 | .PX...L2..J..E..a#.R.....P.BN... |
| 14a20 | 64 9f 70 2d 1c d4 32 d9 92 8b 21 42 2d 99 10 3e 60 c0 03 b8 80 2b 98 31 09 b6 e2 2a f0 71 23 c0 | d.p-..2...!B-..>`....+.1...*.q#. |
| 14a40 | a6 e6 af 21 0a ca 0c 21 55 5a ae b5 40 58 9d a8 00 a7 70 03 87 30 09 8e 70 03 47 d0 77 97 e3 02 | ...!...!UZ..@X....p..0..p.G.w... |
| 14a60 | 0b d0 1e 9e e1 30 fa 88 72 01 62 5a 34 fe 4e 2b ae 19 01 62 77 c3 89 06 b0 20 09 6b 70 42 a9 60 | .....0..r.bZ4.N+...bw......kpB.` |
| 14a80 | 0a 38 a0 08 cb a2 08 69 b5 ec a0 c0 05 5e 50 02 4d c0 bd a7 f0 00 8e d9 00 8f e0 00 b7 b0 1f ed | .8.....i.....^P.M............... |
| 14aa0 | 28 8a 2f a1 07 85 90 b8 a0 c9 20 70 50 c0 ae 94 dc 0c 95 1f f6 61 4b d3 f8 b6 88 06 71 07 07 0b | (./........pP........aK.....q... |
| 14ac0 | 9b 05 4f 08 60 ee 7c 70 50 08 a0 64 9c 9a 13 a7 b1 59 0f 6e 1a 1f 62 09 d3 22 17 12 b0 03 79 43 | ..O.`.|pP..d.....Y.n..b.."....yC |
| 14ae0 | 2d 60 10 06 0c 30 00 c3 10 16 41 10 04 2b c0 00 a8 02 06 03 e2 02 43 00 00 8d 9d 44 23 d7 08 2f | -`...0....A..+........C....D#../ |
| 14b00 | fe 20 b2 71 fe 08 f3 18 8a a9 e1 00 63 29 06 40 1e 2b ab 10 80 3b 95 25 83 35 04 4a 40 20 c8 d9 | ...q........c).@.+...;.%.5.J@... |
| 14b20 | 97 00 ac 55 92 31 a6 c2 fc ef 24 d7 64 26 4c 09 45 20 ed 8f 4e 0b c6 d2 c5 07 a0 62 b0 d7 0a c9 | ...U.1....$.d&L.E...N......b.... |
| 14b40 | 91 09 ae 70 41 04 50 b5 bf 82 eb 60 62 23 7a 00 9d 9a b1 e7 2b f0 09 b7 10 30 b9 82 2b 64 fa 4a | ...pA.P....`b#z.....+....0..+d.J |
| 14b60 | aa eb 12 05 bc ee 51 70 03 ac 8b 7c 32 50 4b 8d 00 6e 36 42 ae 9c d1 08 1b 70 03 14 5a 34 36 e2 | ......Qp...|2PK..n6B.....p..Z46. |
| 14b80 | 4a 8d b0 e2 37 60 c6 bf 20 05 72 c0 f0 c7 41 05 15 70 d5 6b b1 04 6c 20 d8 50 70 40 c3 90 09 0c | J...7`....r...A..p.k..l..Pp@.... |
| 14ba0 | 90 04 c1 80 07 2b 86 06 84 b5 e4 bf 90 e0 8d 50 02 07 d0 01 73 90 06 78 80 09 15 90 19 54 44 34 | .....+.........P....s..x.....TD4 |
| 14bc0 | c8 09 7c fa 78 c8 4f 36 05 6d ef 02 ab 70 c8 dc 26 7c 88 1c 20 91 d1 64 4d 76 98 72 db 97 ab 41 | ..|.x.O6.m...p..&|.....dMv.r...A |
| 14be0 | a6 48 4c 2a 93 f0 05 7b 63 3d a6 80 28 6f 00 04 56 20 06 0c 90 d7 5e 20 09 51 70 ab 33 1a 57 a9 | .HL*...{c=..(o..V.....^..Qp.3.W. |
| 14c00 | 40 03 b1 fe 62 d4 01 e3 c7 fa f8 05 81 50 04 46 e5 07 3d 90 08 db f8 8a 08 00 69 8a a1 a5 f1 02 | @...b........P.F..=.......i..... |
| 14c20 | 2b 4f e6 14 89 50 02 92 71 03 a9 e1 6d e9 7a 1a a6 51 f9 24 90 df ee 18 8f 10 2a 03 77 a7 c4 80 | +O...P..q...m.z..Q.$......*.w... |
| 14c40 | 2e 09 67 b5 56 2c 73 07 60 90 43 be e3 0a 00 71 2a 03 a8 39 0c c0 24 4a 32 27 53 03 30 0e 18 0c | ..g.V,s.`.C....q*..9..$J2'S.0... |
| 14c60 | 29 54 a8 d1 af 5f 87 d0 24 62 c0 4a 0e 22 39 51 86 0c 81 25 04 d6 0d 8a 24 7e 7d fc 55 0b 96 82 | )T..._..$b.J."9Q...%....$~}.U... |
| 14c80 | 5f 4b 1a 7d 94 a4 60 89 24 49 37 0e 4d 1c 52 2b 07 25 12 24 d0 a0 d1 43 02 ce 4d 39 8d f8 14 02 | _K.}..`.$I7.M.R+.%.$...C..M9.... |
| 14ca0 | 90 03 22 80 5f 8d 72 9c 44 a4 42 45 95 37 bd 2a ac c1 84 e5 82 27 5f 26 0e b1 62 e5 c9 d3 0e 25 | .."._.r.D.BE.7.*.....'_&..b....% |
| 14cc0 | 94 a4 64 4a 61 a2 41 90 2f 11 01 20 3d c9 46 82 9c 44 5f 28 49 42 33 84 d2 49 19 24 0a fd 22 a1 | ..dJa.A./...=.F..D_(IB3..I.$..". |
| 14ce0 | 17 41 23 05 72 48 50 82 85 25 a7 0b 34 37 5c f8 bc f1 74 88 24 bf 85 b0 2c a9 d5 48 8a 9c 0d bf | .A#.rHP..%..47\...t.$...,..H.... |
| 14d00 | 5a 01 fe 2e 44 09 4d 4f a5 70 9c de 70 f5 e6 93 2b 45 9f 44 28 91 e4 c4 57 26 3f 87 14 30 e0 91 | Z...D.MO.p..p...+E.D(...W&?..0.. |
| 14d20 | a9 84 1f 17 89 38 c8 b1 21 e2 01 26 04 6f 0b 91 60 0a 24 80 14 29 3d 1e 9c 94 43 99 44 23 e9 2f | .....8..!..&.o..`.$..)=...C.D#./ |
| 14d40 | 1b 61 c1 f2 14 4d 23 8f 43 25 6d c0 c2 67 f4 2f 34 c7 49 ea 01 d9 08 4d 29 05 92 10 f8 a4 64 3d | .a...M#.C%m..g./4.I....M).....d= |
| 14d60 | 87 24 88 87 0d 53 c2 55 c5 55 11 2a a9 3a ad ea 84 07 2e 1a c0 82 84 1c 50 40 81 87 12 90 82 83 | .$...S.U.U.*.:..........P@...... |
| 14d80 | 13 12 a2 50 e2 93 56 10 08 ed 97 bf 7e e2 c3 92 28 1e f0 83 0f 00 d0 90 84 8f 94 78 42 40 bb d0 | ...P..V.....~...(..........xB@.. |
| 14da0 | fc 9a 88 12 39 74 a8 05 b0 1c e0 ca 01 0d c0 28 43 60 b0 5a 14 d8 2b 82 21 28 6a c4 85 8f e0 88 | ....9t.........(C`.Z..+.!(j..... |
| 14dc0 | c2 c0 1d f3 a2 44 11 2a 2a 68 e1 8d 22 d6 b0 a1 13 56 3a 99 40 8e ed 1e 28 c0 04 0a 24 a1 e4 a9 | .....D.**h.."....V:.@...(...$... |
| 14de0 | 46 86 f9 24 8a a6 4c 2a 64 88 f7 84 50 60 15 49 b0 a8 04 25 12 6a fb 45 45 4a f4 f8 4b 12 f5 6e | F..$..L*d...P`.I...%.j.EEJ..K..n |
| 14e00 | 1c fe e2 86 9e c6 0b 2a a2 5f 10 b9 e1 af f8 de fc e5 86 08 38 82 05 2f 3f be d8 68 b4 16 4d 22 | .......*._..........8../?..h..M" |
| 14e20 | 6f 08 57 84 b1 44 85 37 3a d9 21 0b 4d 86 e9 c4 8f 56 64 10 c2 8b 26 2c 71 a9 10 39 c2 e4 90 92 | o.W..D.7:.!.M....Vd...&,q..9.... |
| 14e40 | bd 2c 34 4e 0f 4c 86 30 60 95 20 23 01 0d b1 9e 8e a3 35 c6 12 7b 94 64 3e c0 46 a3 c4 4e f4 12 | .,4N.L.0`..#......5..{.d>.F..N.. |
| 14e60 | 39 ec a3 9e 48 28 ac 96 28 14 f0 88 ba 16 95 8a af 29 39 4c eb c0 88 33 70 78 03 0c 31 3c 99 80 | 9...H(..(........)9L...3px..1<.. |
| 14e80 | 0d 60 a2 60 a3 04 36 f0 c8 00 05 1b 4a f9 72 14 12 22 e3 63 d6 b7 c8 0b 63 09 4a 92 00 82 0f d3 | .`.`..6.....J.r..".c....c.J..... |
| 14ea0 | 78 0c cf c0 46 f4 48 49 8e f7 0c cc 32 87 46 32 cb 81 04 04 14 f0 c9 c0 ca 5a 2c 24 af 9f 00 ab | x...F.HI....2.F2.........Z,$.... |
| 14ec0 | e5 0b 19 29 a9 c4 11 49 52 ba a1 15 85 d7 a0 02 17 13 76 10 83 90 45 16 f1 a4 04 05 92 a0 84 81 | ...)...IR.........v...E......... |
| 14ee0 | 11 30 e9 64 89 1c ec 14 42 92 a4 22 82 19 e6 5f 6e 11 c5 24 bf 72 a8 c5 2f 12 58 69 84 c2 a0 48 | .0.d....B.."..._n..$.r../.Xi...H |
| 14f00 | fe c8 d3 c2 42 f4 88 02 cb 5a 12 19 ad 90 5c 01 98 4e e7 46 48 58 16 8d 80 01 1b c2 34 90 14 48 | ....B....Z....\..N.FHX......4..H |
| 14f20 | c4 0f 96 e4 b8 61 88 46 aa 80 c4 12 30 aa 00 62 07 3c 16 d9 45 8e 4a 0e c4 64 8d 37 80 40 20 10 | .....a.F....0..b.<..E.J..d.7.@.. |
| 14f40 | 1d 8e 40 a1 91 52 56 6e 84 bb bb b9 46 e3 93 13 00 03 40 0f 00 f6 3a 8e 17 2c d4 eb 19 ce 74 fb | ..@..RVn....F.....@...:..,....t. |
| 14f60 | fc 45 eb 9f ca 43 2e 34 00 98 6e e4 b8 9c 81 fe ab 90 17 4d 1a b5 16 39 86 80 5a c6 9e bc fe 45 | .E...C.4..n........M...9..Z....E |
| 14f80 | 18 15 5a 60 e0 93 09 92 68 82 07 52 28 e1 63 14 23 32 e9 a4 82 12 1a 39 e5 04 5e 6a 31 ee a9 5f | ..Z`....h..R(.c.#2.....9..^j1.._ |
| 14fa0 | 22 79 a0 95 f0 7e f9 c2 0f 00 46 d5 53 34 7c 17 80 53 e9 1d 0b 89 40 01 a4 62 7a 8f 22 a1 d3 1d | "y...~....F.S4|..S....@..bz."... |
| 14fc0 | ac f8 1b fe 7d ef 38 12 a6 d8 ab 94 ed 41 8c 71 88 ed 7e 79 b1 94 21 de a8 e2 0e 3c 78 90 20 8c | ....}.8......A.q..~y..!....<x... |
| 14fe0 | b0 26 f8 7d 95 06 f0 68 e2 80 29 d0 10 02 14 49 90 0a d3 47 ca 32 99 ed 41 64 08 5f 10 53 50 fe | .&.}...h..)....I...G.2..Ad._.SP. |
| 15000 | 6a 41 a1 e3 50 04 4e 4d 39 ce 9b 66 e5 97 b7 fc ef 43 92 01 8c cd 20 82 00 34 20 22 4b 11 01 4a | jA..P.NM9..f.....C.......4."K..J |
| 15020 | 2d 22 a2 00 bb 44 27 83 ff ea 85 0a 38 f0 83 11 d4 41 0c 0a 19 00 14 48 91 97 2c f8 42 04 42 18 | -"...D'.....8....A.....H..,.B.B. |
| 15040 | 46 26 a2 50 1e e3 38 40 0e 4b 88 04 72 26 c7 34 a6 e9 e9 2f 80 93 48 e4 7e 41 b0 88 50 30 4c b5 | F&.P..8@.K..r&.4.../..H.~A..P0L. |
| 15060 | aa 45 79 f4 50 94 84 39 a5 27 81 f2 cb f9 8e a3 1d 12 1c ee 23 87 90 43 9b 94 a2 02 50 88 60 11 | .Ey.P..9.'..........#..C....P.`. |
| 15080 | be 68 c0 24 50 d0 09 3c 88 c0 7c 8d e0 c1 22 32 e0 85 2e f8 e2 04 a3 ca e2 29 6a d1 8a 52 f4 c4 | .h.$P..<..|..."2.........)j..R.. |
| 150a0 | 28 bf 40 9e d4 f4 14 98 c0 dd 40 0b 3d e9 5a f3 14 00 27 85 05 ac 60 14 09 18 1f 2c 42 ae 94 c4 | (.@.......@.=.Z...'...`....,B... |
| 150c0 | 48 0f e8 b1 d0 b9 04 d6 13 d1 ec 2a 67 68 a0 c4 1a 34 61 84 45 e0 01 0f 46 f8 04 17 ea 90 86 2f | H..........*gh...4a.E...F....../ |
| 150e0 | 34 05 0c 68 eb 44 17 46 b0 0a 4a 34 b0 12 62 28 1a 60 4a f2 17 04 08 ce 38 16 d2 c3 c2 ba fe 58 | 4..h.D.F..J4..b(.`J.....8......X |
| 15100 | b9 88 4c 2c 46 20 d8 8e d7 80 36 ac 3b 49 82 13 7a 50 80 f8 b4 10 81 73 e5 20 28 e4 22 41 74 0e | ..L,F.....6.;I..zP.....s..(."At. |
| 15120 | 53 12 7c c9 49 6a 46 c0 01 26 d2 e0 85 09 38 60 04 be c0 83 2f 7a e0 84 24 c8 80 07 35 cc 80 82 | S.|.IjF..&....8`..../z..$...5... |
| 15140 | 84 46 82 43 88 e0 10 14 89 19 00 97 89 af bf e8 e1 5e 11 69 9e 49 1a c1 b4 d1 50 10 22 11 41 00 | .F.C.............^.i.I....P.".A. |
| 15160 | e8 8e 93 50 8a d4 09 0d 3a e0 c3 10 08 e6 93 05 1a e8 17 8c dc d5 4b 10 f0 0b 15 94 ad 0e 22 38 | ...P....:.............K......."8 |
| 15180 | c2 1c 78 00 0c 25 c4 73 10 0d 18 82 1b 44 90 81 2a a8 22 67 0d 34 c0 15 a4 b8 2e e3 30 0d 73 13 | ..x..%.s.....D..*."g.4......0.s. |
| 151a0 | 13 da 2f de a2 87 cd 69 54 0f 9d 04 da 9c 78 ea 87 f2 20 40 27 7f c9 a6 a9 9e d5 88 30 12 ce 4f | ../....iT.....x....@'.......0..O |
| 151c0 | 2f 32 df 0d 74 32 18 12 b4 80 0a c2 68 c0 15 48 01 85 34 d8 60 08 99 f8 98 2f c4 d0 83 39 88 80 | /2..t2......h..H..4.`..../...9.. |
| 151e0 | 01 74 a1 50 07 92 a0 03 38 78 8f 56 98 4b 58 13 63 06 b5 17 49 e2 92 95 39 e2 10 ca e7 fe 13 7c | .t.P....8x.V.KX.c...I...9......| |
| 15200 | fa 25 93 68 20 e8 12 0e 23 a2 f7 00 a0 11 b5 b4 10 25 6a 61 be 5a 30 4e 27 7a a8 c2 27 1a 00 84 | .%.h....#........%ja.Z0N'z..'... |
| 15220 | 4b 48 01 0a 3c b0 01 f0 76 01 cf 28 9c 02 0b 78 28 0b 79 86 31 01 3f f0 15 66 c6 41 2a aa dc 62 | KH..<...v..(...x(.y.1.?..f.A*..b |
| 15240 | 19 4a 50 08 67 e5 d1 dc 49 9e 52 14 7c 45 06 30 41 b1 50 53 80 72 03 05 80 ce 27 79 c2 8b 24 6a | .JP.g...I.R.|E.0A.PS.r....'y..$j |
| 15260 | 91 ab 89 68 4e 3d 97 ac 1c 03 3a a0 02 5e 0c 43 09 65 d8 43 10 de a0 02 25 1c 00 13 07 88 44 10 | ...hN=....:..^.C.e.C....%.....D. |
| 15280 | 6e 00 04 13 fc ef 17 0b 00 e5 bd 10 b0 81 e6 d1 ea 2d 0c 84 6d 14 9d 0a b3 9e 6c 34 34 31 9b 9a | n................-..m.....l441.. |
| 152a0 | 11 ff 22 a2 23 ea e4 30 85 a0 10 79 fe e7 93 e7 f1 b4 32 04 13 81 2f ea f0 03 5c 0e 23 17 9d 70 | ..".#..0...y......2.../...\.#..p |
| 152c0 | c3 1b 56 74 8a 3f c9 48 0e a3 02 e5 11 09 96 83 0d 00 54 66 b3 aa ad 1e 7c c8 c3 42 6a 2e 3b 4d | ..Vt.?.H..........Tf....|..Bj.;M |
| 152e0 | ac 0c 09 fe 17 b0 9c 6c c7 24 77 3d 57 6f b9 16 4c c2 c0 0c 28 c1 c4 02 7e 3f f7 8b fe 4c 64 20 | .......l.$w=Wo..L...(...~?...Ld. |
| 15300 | 14 98 00 42 12 3a 81 09 0e a0 22 0a 93 e0 c0 1b cc 77 aa c3 c2 a2 2f 7e 09 e3 10 22 71 d0 98 58 | ...B.:...."......w..../~..."q..X |
| 15320 | 08 0b 97 2c 44 ba 8e 33 19 d0 c4 75 57 d6 dc a2 f7 02 f6 97 17 e9 94 24 7e 6d 0a 60 14 8b d4 1c | ...,D..3...uW..........$~m.`.... |
| 15340 | 18 c7 b7 c4 7a cf 61 6b e1 8b 45 60 62 0e 72 c4 83 18 82 f0 08 36 4c 22 0d 6e e8 53 98 14 c0 01 | ....z.ak..E`b.r......6L".n.S.... |
| 15360 | ec b4 12 29 f5 01 1d 03 69 95 2e bc 46 50 45 f8 ca e6 53 48 20 1e c8 d9 e9 2f 16 e1 24 ad d4 03 | ...)....i...FPE...SH...../..$... |
| 15380 | 11 34 b8 00 9f bf e8 25 22 01 f3 39 66 5e f1 0b 91 c8 c2 c7 d8 d8 89 4e 64 42 18 a8 10 83 03 1e | .4.....%"..9f^.........NdB...... |
| 153a0 | 00 07 19 2d 51 0a 6e 68 00 0a 32 38 9a 1c f0 e2 06 7a 10 21 98 26 f7 34 98 81 40 22 3a b1 5e 98 | ...-Q.nh..28.....z.!.&.4..@":.^. |
| 153c0 | de 22 3a 46 c1 ec 7f de cb ed a5 3f 04 d8 88 c4 08 39 f8 02 4a 0e 18 78 c5 86 86 81 07 23 c0 43 | .":F.......?.....9..J..x.....#.C |
| 153e0 | 17 82 10 86 26 b0 22 13 3a 20 03 0f a2 50 88 cf e4 20 0c 17 e0 41 1b 28 01 11 9d fe 16 0d 39 0a | ....&.".:....P.......A.(......9. |
| 15400 | 3d ad c1 74 fa 94 ed 15 22 32 48 a1 dc 94 77 d2 40 3d 99 8f 56 16 92 51 cc 52 12 1a 3f 6c ee 8a | =..t...."2H...w.@=..V..Q.R..?l.. |
| 15420 | 72 35 4f c2 48 00 0c 3c e4 82 07 75 50 c2 10 a2 70 83 38 fa 02 0c 3d 90 03 b2 48 c0 80 39 e0 e1 | r5O.H..<...uP...p.8...=...H..9.. |
| 15440 | 00 a5 90 c3 2f 61 3b 57 b7 c8 e8 45 4d 7c 4b 0e 9e 62 e1 79 ce d3 ad 3f b1 5c 65 78 f8 17 3b f1 | ..../a;W...EM|K..b.y...?.\ex..;. |
| 15460 | c8 2f fc 04 1a e8 40 a2 05 3f 50 04 0c 3f 50 85 2f c2 f5 05 21 d8 c0 06 67 f4 44 12 0c c4 0a 3e | ./....@..?P..?P./...!...g.D....> |
| 15480 | 74 a0 13 9a 60 05 03 8e 9d db 9d 1e 27 29 e7 e2 43 0e e4 50 e6 b7 4c 70 c4 51 d6 29 97 01 f3 85 | t...`.......')..C..P..Lp.Q.).... |
| 154a0 | 46 dc 5a 2f 33 2f 62 98 88 69 f5 b7 54 2e 28 3b 3a 97 70 b1 40 91 5a 16 c2 13 61 15 41 10 0a e0 | F.Z/3/b..i..T.(;:.p.@.Z...a.A... |
| 154c0 | 09 0b f0 40 04 61 70 03 10 ee a2 80 1c 74 80 07 da f6 d1 20 d1 97 f6 75 f5 4c 68 70 21 66 06 f5 | ...@.ap......t.........u.Lhp!f.. |
| 154e0 | 39 57 5d c2 d6 af 00 6d 1e 4f 2a 43 5f 89 a0 81 13 b6 e1 84 5e 8a c2 cd f2 70 fe c5 04 12 c8 42 | 9W]....m.O*C_.......^....p.....B |
| 15500 | 03 38 90 05 0b 48 a0 0a 73 e0 00 10 a2 40 68 29 f8 42 e8 43 28 10 12 05 fd a2 94 0b 0e 7d 7e 59 | .8...H..s....@h).B.C(........}~Y |
| 15520 | 82 9d a4 3d 2b 89 e0 ac f3 b9 1d 8d 20 9f f7 0b 4e e0 33 69 c7 b9 d7 7a 22 21 a5 92 0c 01 5f 59 | ...=+...........N.3i...z"!...._Y |
| 15540 | 82 4c e5 04 91 8b 11 fc 00 e2 12 b0 00 1e 24 f0 03 3c d4 10 13 5a 80 5c 12 32 00 8c 49 54 4e 88 | .L............$..<...Z.\.2..ITN. |
| 15560 | 00 cc a7 da 6b 19 c6 2a cb 15 b5 4e 74 0b 79 22 47 7c 45 bb 15 fa e7 7a 89 1b 28 8f dc 6a a0 ae | ....k..*...Nt.y"G|E....z..(..j.. |
| 15580 | f9 17 2f 71 85 00 cb 82 24 78 12 13 e0 81 20 e0 02 4f c8 02 1e c8 80 14 a0 20 04 98 03 5a 58 05 | ../q....$x.......O...........ZX. |
| 155a0 | 19 c0 a7 c9 71 8b ab 6b b6 59 e1 83 ee 29 22 e3 28 11 5a 81 19 de b3 b7 89 f8 85 63 93 af e9 80 | ....q..k.Y...)".(.Z........c.... |
| 155c0 | 1c c8 d0 25 4e 6a 8f f6 e2 89 92 90 03 30 c0 85 11 58 84 4e 50 05 4f 18 01 0e 30 83 58 10 03 06 | ...%Nj.......0...X.NP.O...0.X... |
| 155e0 | a8 b1 b9 03 a1 4c c0 84 24 88 22 f8 1b 39 bc 7a 0b 0f dc 3a 14 84 19 c1 41 fe 8a e7 ab 32 fa 02 | .....L..$."..9.z...:....A....2.. |
| 15600 | 8c e2 90 99 bf 28 3b b9 2a 28 34 c8 19 a2 81 83 49 f8 82 cc 70 20 9f 38 82 01 00 04 3c d8 85 3e | .....(;.*(4.....I...p..8....<..> |
| 15620 | 20 b0 5d e8 04 13 88 82 55 e0 02 3c 08 23 9d 21 05 32 c8 04 a0 28 b4 de d1 b5 dc 12 11 de e1 09 | ..].....U..<.#.!.2...(.......... |
| 15640 | de fb bd b7 70 37 7b 63 af 2a 84 13 f4 58 ac a7 41 9f 17 f9 99 f6 62 18 7f 39 01 ca c0 02 a6 89 | ....p7{c.*...X..A.....b..9...... |
| 15660 | 22 12 c0 05 29 10 04 db cb 05 11 e0 80 53 cb 84 24 98 04 53 2a 10 80 1a 06 3c 98 00 19 f1 35 f3 | "...)........S..$..S*....<....5. |
| 15680 | 62 af f2 78 91 91 eb b2 cc 01 31 7d 8a 9c d5 ca c5 23 6a 13 1c 39 0e 5c 43 28 92 38 89 28 32 8a | b..x......1}.....#j..9.\C(.8.(2. |
| 156a0 | 82 c2 11 8a e0 83 46 a0 80 8e 91 80 45 90 00 5f c0 84 26 28 81 49 38 80 24 38 02 1e e0 01 17 24 | ......F.....E.._..&(.I8.$8.....$ |
| 156c0 | 01 40 58 84 ee 02 80 2f 30 90 98 19 a2 83 0a 8c c1 88 91 8b 7a 2b 10 0a 38 9d 09 41 9a 7b 2b bf | .@X..../0...........z+..8..A.{+. |
| 156e0 | 10 91 08 b0 90 97 c2 b5 9f 98 88 08 40 0f 9f 38 c6 0c 72 2f 50 d8 81 4c fe d8 36 68 cc 04 4f 88 | ............@..8..r/P..L..6h..O. |
| 15700 | 3d 2c 80 02 15 60 05 c0 22 0d 14 c8 80 58 10 21 66 83 99 3c a3 15 2b fc 20 f8 1b 96 f8 03 1a 0f | =,...`.."....X.!f..<..+......... |
| 15720 | 04 13 cd 99 95 7f 81 2d 3d a8 91 f6 88 82 bc 41 1f c0 4a 8a bb 09 94 ae c9 0c f7 d3 03 61 10 86 | .......-=......A..J..........a.. |
| 15740 | 4c d8 84 0e c0 03 86 1b 01 3a 9c 84 4e 68 83 36 e9 b7 49 68 00 31 18 a8 c9 09 b1 b5 2b 2e 14 9c | L........:..Nh.6..Ih.1......+... |
| 15760 | 08 81 d1 9c 84 5a c4 88 10 40 0b 31 8c 7c 6a 13 93 a0 2a 10 f1 83 bd d0 99 56 c0 23 9d b9 a8 9f | .....Z...@.1.|j...*......V.#.... |
| 15780 | 58 34 01 cc a6 2a 10 06 06 a8 03 4f a8 83 03 e8 84 58 d8 01 2c e8 04 60 38 81 e9 d0 13 e2 69 00 | X4...*.....O.....X..,..`8.....i. |
| 157a0 | 2f 09 38 2b cc c5 28 8c 37 32 ab c2 ca 58 39 a4 0a b1 88 c8 9b 21 98 4a 12 70 90 18 21 89 d1 c8 | /.8+..(.72...X9......!.J.p..!... |
| 157c0 | 9b e3 38 96 e9 f8 88 f8 50 b9 c3 49 c6 5a 40 a6 fc 60 00 25 10 01 4c 70 02 60 c8 80 17 a0 04 14 | ..8.....P..I.Z@..`.%..Lp.`...... |
| 157e0 | c8 0a 29 f8 c8 c3 40 81 12 e8 93 9b 29 34 60 02 80 e2 c0 b5 ff f9 17 fe 38 61 c7 0f 99 98 41 92 | ..)...@.....)4`.........8a....A. |
| 15800 | 2b bf d0 01 1b 78 1d 3d 88 00 ea 78 9a 37 92 03 4e 98 1a 5d 1a 36 e8 30 89 80 41 03 2a 7a 83 0a | +....x.=...x.7..N..].6.0..A.*z.. |
| 15820 | 20 85 29 00 b2 06 90 00 37 28 01 ec a8 00 b2 cb 45 a0 91 01 1b 30 0c 0f 5c 2d 14 0c 47 e8 cb a4 | ..).....7(......E....0..\-..G... |
| 15840 | 51 a1 9c 22 fa 99 c9 8b 08 39 68 05 07 d0 81 55 00 21 f5 f8 cd 18 39 1c c3 08 8a d1 b0 3e 4c b3 | Q..".....9h....U.!....9......>L. |
| 15860 | 8e d0 6b 89 89 e0 03 43 00 05 50 a8 00 2c 88 82 44 98 82 1b 80 1d 04 90 93 44 68 1e a6 f9 85 52 | ..k....C..P..,..D........Dh....R |
| 15880 | 50 82 1b 98 c2 07 6a a2 fa b8 37 84 9b 0f 7b 21 18 cb 43 0e 81 19 82 c6 b3 9b 82 89 08 58 08 23 | P.....j...7...{!..C..........X.# |
| 158a0 | 04 c8 b3 3b 19 96 4f 32 09 ad b4 1e c0 e0 b5 31 a0 85 16 28 82 0a e8 84 26 58 05 89 2a bb 43 c0 | ...;..O2.......1...(....&X..*.C. |
| 158c0 | 82 47 90 02 bf 78 8f 84 7a 9a eb dc c5 bf 48 b9 54 e9 ba 2b 5a 26 0a 3a 89 01 6c 4d 34 88 82 73 | .G...x..z.....H.T..+Z&.:..lM4..s |
| 158e0 | 84 c4 bc f0 09 cd 89 0c a0 41 03 0e 3a 2c 17 20 0c ba 12 28 eb 13 fe 31 c2 6b 83 0a f8 84 e9 52 | .........A..:,.....(...1.k.....R |
| 15900 | 82 4c 78 04 5e 80 83 de 92 91 64 5c 02 7f 32 00 c8 91 91 52 50 ca b5 8b 19 ca 18 0d 05 58 94 4d | .Lx.^.....d\..2....RP........X.M |
| 15920 | 8a ab 13 73 af 84 c9 93 2e 42 0a 11 1b 8f 89 28 4a 9b 59 94 a2 54 0f 99 e9 3a 5d 6a 13 04 18 83 | ...s.....B.....(J.Y..T...:]j.... |
| 15940 | 37 10 86 0a c0 05 30 78 80 1b 28 05 03 68 85 23 50 b2 d1 20 13 03 99 a2 c0 80 c4 1a 25 3e fc 7a | 7.....0x..(..h.#P...........%>.z |
| 15960 | a0 ba bb a4 8b ea 34 7a 1b 1a 3f d0 27 da 5a c1 42 f8 02 58 a8 1c 89 32 1f 34 50 80 c2 08 13 39 | ......4z..?.'.Z.B..X...2.4P....9 |
| 15980 | 51 cd 80 c9 81 4a 30 8d 9d d0 4d a8 a1 84 0a 10 86 33 48 00 48 10 86 36 78 83 6a e1 80 0c 50 00 | Q....J0...M......3H.H..6x.j...P. |
| 159a0 | 0d 00 96 46 e8 01 95 33 00 f5 38 02 03 80 93 2d 21 3c 56 51 00 04 48 d6 42 88 22 88 c0 a4 a1 c9 | ...F...3..8....-!<VQ..H.B."..... |
| 159c0 | 15 0b ed a7 a4 18 36 3b b1 99 8d d2 d6 b2 c3 92 1b 40 84 a4 99 41 4e 65 18 44 18 1d 30 21 01 af | ......6;.........@...ANe.D..0!.. |
| 159e0 | c4 05 5a 50 01 5c 80 04 32 a2 82 85 68 84 02 f8 81 67 29 8c 5f fe 20 03 38 18 02 08 00 81 3e 91 | ..ZP.\..2...h....g)._...8.....>. |
| 15a00 | 84 3e 90 82 46 78 82 3e 38 02 34 38 82 5a 3d 04 06 28 8f a7 b1 a6 68 ad 0f bd c4 af a9 01 c7 29 | .>..Fx.>8.48.Z=..(....h........) |
| 15a20 | 83 ad bc 19 15 fa b8 35 a6 6a 20 7b 7c 09 38 30 10 13 b3 10 4b f2 a7 4f 30 04 5c 15 06 43 a0 82 | .......5.j.{|.80....K..O0.\..C.. |
| 15a40 | 36 68 81 33 e0 82 55 51 00 03 f0 80 99 2d 85 43 98 04 0f 38 04 1b 30 00 5b 18 02 10 d0 80 39 b8 | 6h.3..UQ.....-.C...8..0.[.....9. |
| 15a60 | 01 03 e0 81 18 68 84 40 80 05 95 2b 05 09 20 97 97 08 a6 62 4b 38 4c fb 1f 4a 20 a8 b6 9b 95 e4 | .....h.@...+.......bK8L..J...... |
| 15a80 | 43 be de 6c ad e3 48 1a 26 32 ac ca d8 a5 46 00 85 31 38 83 36 60 80 5e b0 84 4f f0 ca 4e a8 03 | C..l..H.&2....F..18.6`.^..O..N.. |
| 15aa0 | 62 9c 82 56 a8 85 43 20 81 49 88 01 22 00 04 31 38 84 80 99 03 18 48 d6 4e 80 00 21 e0 85 24 28 | b..V..C..I.."..18.....H.N..!..$( |
| 15ac0 | 28 42 f0 80 e9 50 57 80 62 36 00 0c 8d a7 78 0b c4 fa b5 ed d1 ba f1 80 b9 60 2a 85 ff 11 d2 59 | (B...PW.b6....x..........`*....Y |
| 15ae0 | cb 24 af 79 1a 1f c9 a2 16 80 04 35 30 04 15 18 83 d3 c1 05 fe 15 00 86 3e c8 09 c2 1b 80 21 38 | .$.y.......50...........>.....!8 |
| 15b00 | 04 de 32 01 22 b0 83 1f 48 04 96 e8 00 0d b0 0d 09 f8 80 19 90 82 2b 30 0a 7a 2a 03 92 c4 12 bf | ..2."...H.............+0.z*..... |
| 15b20 | 10 a1 0f a9 b2 c7 03 2c 40 32 1f 39 c0 02 3f 53 b8 fc 62 a6 f7 62 8a 9c 78 8f 40 43 32 93 00 00 | .......,@2.9..?S..b..b..x.@C2... |
| 15b40 | 57 a0 82 17 a8 02 43 b0 82 57 a0 02 4b 80 84 41 90 a9 a6 f9 85 13 f8 88 21 e0 01 0d 00 84 3a 98 | W.....C..W..K..A........!.....:. |
| 15b60 | 82 97 38 02 9d cd 01 0e e8 03 9a 90 00 58 f0 c2 23 90 83 2c e1 09 3f 0c 23 c3 4a 41 c2 61 2a 6b | ..8..........X..#..,..?.#.JA.a*k |
| 15b80 | 22 8f 9f 01 00 ca 28 cd 52 a8 d1 74 d1 44 d0 f9 05 2c 88 80 a2 68 11 5e 03 2a 5c 68 03 45 a8 02 | ".....(.R..t.D...,...h.^.*\h.E.. |
| 15ba0 | 31 30 04 61 f8 04 45 78 81 30 d8 04 55 95 02 5e 78 11 c2 93 84 4c 08 83 29 b8 00 56 f0 97 0b f8 | 10.a..Ex.0..U..^x....L..)..V.... |
| 15bc0 | 80 c3 9a 83 18 c0 bd 4e 98 82 65 72 00 25 08 94 a7 c9 0b 99 81 08 47 1a 1a 3f e9 a7 8b a2 88 3c | .......N..er.%........G..?.....< |
| 15be0 | 68 b5 5e 12 9a e7 93 11 70 ad 05 60 b3 c5 ce 23 81 17 80 fe 84 0a 60 d9 0a 78 03 ec 55 01 11 00 | h.^.....p..`...#......`..x..U... |
| 15c00 | 02 a6 32 00 88 b8 01 5e 18 82 27 68 82 3e b8 81 19 b0 81 5f a8 84 3f 90 00 55 e5 02 11 50 00 5e | ..2....^..'h.>....._..?..U...P.^ |
| 15c20 | 20 82 4d a8 8c 46 68 5f 5d ba a4 5a d4 ba 40 9a a0 01 7c 10 48 24 98 1d f5 42 a8 61 14 76 b5 a8 | ..M..Fh_]..Z..@...|.H$...B.a.v.. |
| 15c40 | 40 d1 1c 39 a0 a4 14 52 01 43 78 85 a9 a8 82 a9 d8 01 37 f8 08 9f 0d 26 10 88 04 25 90 80 20 60 | @..9...R.Cx.......7....&...%...` |
| 15c60 | 01 22 60 01 05 b8 80 19 18 86 98 60 81 30 c8 e2 0b 98 82 2d 1a d9 23 cd 22 cc 09 38 b7 18 4c 98 | ."`........`.0.....-..#."..8..L. |
| 15c80 | e3 91 69 0b bb ba 03 33 17 33 8e 59 39 09 6a eb 25 61 a8 02 b0 51 04 43 78 81 10 a0 82 37 50 04 | ..i....3.3.Y9.j.%a...Q.Cx....7P. |
| 15ca0 | 56 90 82 49 20 bc 43 90 93 1b 80 51 4e 30 80 43 48 84 89 f0 17 a7 b0 0d 49 48 84 bc 35 cf a1 c1 | V..I..C....QN0.CH.......IH..5... |
| 15cc0 | 2b 29 d9 11 b7 6b 22 6b ca a6 3e c9 01 4e 08 cd 82 b2 90 10 49 98 57 f4 bf 95 f1 0b 2c 88 22 4c | +)...k"k..>..N......I.W.....,."L |
| 15ce0 | ab cd 10 6b 81 2a 28 02 43 d0 84 4f 40 82 16 e8 d5 57 fe 00 82 0e 60 80 10 36 00 03 00 81 40 68 | ...k.*(.C..O@....W....`..6....@h |
| 15d00 | 85 9a 18 1a 95 bb 28 3d 78 a6 cc 79 c2 a1 d1 d0 ef d4 ca 83 c3 2f 31 6b 94 cc 01 db 2c e2 48 0a | ......(=x..y........./1k....,.H. |
| 15d20 | 39 2c 8c ba ad 1b 46 83 14 a0 b4 e9 70 3f 34 50 01 2a e8 85 33 f8 84 35 28 d4 d4 40 02 61 48 03 | 9,....F.....p?4P.*..3..5(..@.aH. |
| 15d40 | 31 10 82 02 18 e6 29 30 00 29 78 00 14 d8 24 a0 88 08 bd d2 a7 de a9 95 0d a0 8c 40 79 0b 44 60 | 1.....)0.)x...$............@y.D` |
| 15d60 | 2a c3 1a 9f 7f d9 32 3d 90 0e 11 d3 2b c5 b0 bc 01 3e ac e6 fb 4d bd f4 43 61 59 2c 43 f8 84 44 | *.....2=....+....>...M..CaY,C..D |
| 15d80 | 16 06 45 38 03 5c ce 5e 4d 88 1f 13 98 03 4c 78 03 09 38 02 06 60 80 47 30 18 11 ca 3f a0 64 b6 | ..E8.\.^M.....Lx..8..`.G0...?.d. |
| 15da0 | 93 a3 88 e7 7b a0 b6 76 0b a0 d1 3f cb ab 1c 31 bc 48 39 6d a0 9c 21 0f 47 7b 53 19 01 9d 1c 38 | ....{..v...?...1.H9m..!.G{S....8 |
| 15dc0 | 84 05 aa 13 4d 70 05 5c 10 86 35 38 03 15 e8 05 2a 80 84 57 78 03 0e e0 81 41 50 82 1a 30 81 60 | ....Mp.\..58....*..Wx....AP..0.` |
| 15de0 | 28 9a 63 11 1d 0f c4 27 be 7c 11 6e 86 ad 91 43 0f fe 9b 96 c8 e9 60 a4 44 20 e8 d6 bc 1c 9d c9 | (.c....'.|.n...C......`.D....... |
| 15e00 | a6 d0 d8 3a a7 c9 2d 11 02 8c 3e f2 89 9e 41 8a af 31 84 77 36 82 16 f0 81 4f f0 dc 43 36 84 2c | ...:..-...>...A..1.w6....O..C6., |
| 15e20 | 9d a3 20 40 05 0e 6a 2c 47 e2 a9 bf 78 29 e2 5d 44 60 f2 ab 47 f2 8b 1b 30 8e fd 02 b8 0f ed 89 | ...@..j,G...x).]D`..G...0....... |
| 15e40 | c1 c1 2d 81 ca 22 c6 3d 22 3f da 17 a2 f6 a7 2b a3 82 31 e8 85 2a c0 85 5e 48 12 57 38 03 f6 51 | ..-..".="?.....+..1..*..^H.W8..Q |
| 15e60 | 04 48 10 83 07 38 81 4b 98 93 5f 18 05 39 e0 03 47 50 6d 38 e9 25 fc 3a 2d fd 4e 98 a4 a1 0f 28 | .H...8.K.._..9..GPm8.%.:-.N....( |
| 15e80 | fb 32 55 1d 15 85 52 9c 94 e0 a9 c6 e8 09 dd 2c a2 2f 43 80 3e 0a ce 33 d3 3f 3d c0 02 ae 39 ac | .2U...R........,./C.>..3.?=...9. |
| 15ea0 | 16 68 81 36 a8 02 45 48 e9 16 40 02 97 9d 2e 1f 00 82 15 55 99 0e a2 84 61 e0 84 0e a2 ed 75 39 | .h.6..EH..@........U....a.....u9 |
| 15ec0 | 84 59 06 a0 30 0a 41 e4 10 0f bf d0 bc bd 74 ca df fb 45 3d 61 b6 1f 75 2d 29 29 65 b9 66 e0 08 | .Y..0.A.......t...E=a..u-))e.f.. |
| 15ee0 | 10 c6 5c 06 02 23 a8 82 12 55 01 4b 18 e9 5e 30 fe 92 1d fb 82 da 1c 06 50 70 00 20 18 0f 05 40 | ..\..#...U.K..^0........Pp.....@ |
| 15f00 | 2d 6b 9e 9c a8 ec 53 a6 09 39 2e 1b 8c fe be e9 5a 09 8c bf f0 03 df 1a 8f 29 03 1a fa 68 93 b6 | -k....S..9......Z........)...h.. |
| 15f20 | 16 a8 b2 9b 8e d1 5b 93 2e 53 01 4d a8 02 2a f0 01 23 a0 82 5d a6 82 57 80 04 24 a8 82 17 60 85 | ......[..S.M..*..#..]..W..$...`. |
| 15f40 | 48 30 24 41 00 85 14 d0 9a a7 49 04 01 d5 3f 8a 60 8a 8d bc ab 75 e9 29 e2 53 14 a0 10 8d 0f 0d | H0$A......I...?.`....u.).S...... |
| 15f60 | a3 e0 8c 20 2e 3b 0e ca 08 0a 5e e3 c8 c6 88 84 c6 52 00 a6 ca 9b bd c8 81 57 68 01 15 a8 00 45 | .....;....^......R.......Wh....E |
| 15f80 | 50 0d 43 88 ac 0c 3e 9d 8e 92 83 2f 80 90 4d a0 04 3f c8 15 e8 d9 0e 8f e4 b7 cc 79 65 46 42 60 | P.C...>..../..M..?.........yeFB` |
| 15fa0 | 7c f1 92 4d 07 81 84 52 0c 20 de 25 18 fc 29 d2 de 24 9d fa 85 20 e9 09 e1 fa 97 13 8b 91 f8 38 | |..M...R...%..)..$.............8 |
| 15fc0 | 91 46 30 04 1c 10 86 57 80 62 48 48 00 5c fe 04 2a c0 98 36 30 84 21 18 85 36 48 99 21 70 81 e1 | .F0....W.bHH.\..*..60.!..6H.!p.. |
| 15fe0 | 22 81 55 40 18 1c 7d 3c 14 54 f4 c3 b8 c8 4a fe 80 4a 62 3b 09 d0 60 c7 36 e1 74 76 23 49 a5 14 | ".U@..}<.T....J..Jb;..`.6.tv#I.. |
| 16000 | 43 7f 09 a3 f5 1c 9d 46 58 09 0a 83 83 c8 42 ef a9 38 83 17 30 84 f5 a6 85 6f ef 85 36 68 05 04 | C......FX.....B..8..0....o..6h.. |
| 16020 | 69 00 4a 88 80 4f cf 81 2f 60 77 1e f6 c0 01 bc 1b e8 2b 0f 9e 40 ac 64 bc 01 07 2e f6 5f 10 0f | i.J..O../`w.......+..@.d....._.. |
| 16040 | b8 eb 9a 84 69 ca 0b 99 95 c1 d4 3f 9b 69 8a 75 8b a8 9c 28 0a c5 12 0d 94 6d 83 38 3f 12 57 58 | ....i......?.i.u...(.....m.8?.WX |
| 16060 | 03 5c 78 81 5e 00 85 57 78 05 56 4f 82 4c 58 82 08 70 01 52 6d 91 c6 e0 3c 5e 5a 17 bf 0a 1c 5a | .\x.^..Wx.VO.LX..p.Rm...<^Z....Z |
| 16080 | 19 82 74 11 8d 51 88 82 0e 40 01 20 48 04 1c d0 01 10 d9 8b 5e e9 99 c0 08 31 d8 7a 8a 8d 32 6a | ..t..Q...@..H.......^....1.z..2j |
| 160a0 | eb bd a4 01 ff 82 24 78 09 f6 18 16 34 a0 02 2a 60 82 c5 46 64 24 70 85 0c 56 5b a9 40 e4 15 60 | ......$x....4..*`..Fd$p..V[.@..` |
| 160c0 | 8c 5a ff 88 c9 31 6a 7f c2 a3 1f e5 45 eb 51 11 2c 40 81 07 80 82 4e 40 81 30 10 02 4c 90 00 31 | .Z...1j.....E.Q.,@....N@.0..L..1 |
| 160e0 | b8 81 c9 e2 83 52 c0 02 4a 70 81 a3 46 83 fe b6 10 31 5f d1 8b ab 15 36 15 89 04 53 91 a8 9e c0 | .....R..Jp..F....1_....6...S.... |
| 16100 | a4 c0 40 84 c2 3e e4 5c 7d 85 5e c8 d5 17 98 62 61 b0 aa 0c 87 fd 05 40 c3 30 99 4a 53 19 0f 48 | ..@..>.\}.^....ba......@.0.JS..H |
| 16120 | fa 85 44 88 02 2c b8 05 1d 58 01 36 c0 82 36 c8 6d 11 48 02 3c 58 85 12 08 83 20 00 02 17 50 82 | ..D..,...X.6..6.m.H.<X........P. |
| 16140 | 55 78 80 0e 70 97 53 58 dd d4 12 98 36 a9 a8 5d 31 10 0d 3d 8c 2e 05 8a 25 c2 90 48 78 9c 43 c0 | Ux..p.SX....6..]1..=....%..Hx.C. |
| 16160 | 01 b0 e1 6d 45 00 85 16 50 04 26 80 84 16 a8 00 48 a0 ea db d6 04 61 a0 85 31 d0 01 1d 70 04 1d | ...mE...P.&.....H.....a..1...p.. |
| 16180 | c0 85 37 00 88 15 11 78 51 fa 35 c4 81 a3 31 86 a8 50 d1 04 e6 cd 04 61 3a 24 1c c0 32 84 03 87 | ..7....xQ.5...1..P.....a:$..2... |
| 161a0 | 28 ad 3a 00 63 e5 a2 51 0f 25 ac 86 34 fa 82 85 d2 a1 8f 24 d0 50 22 51 e8 e5 af 0d 92 7e fd 42 | (.:.c..Q.%..4......$.P"Q.....~.B |
| 161c0 | 93 83 04 4d 12 38 49 dc b8 59 6a c8 af 5a 34 85 bd 52 21 8c ca 99 85 c2 5e b4 38 d3 ab 57 1b 5a | ...M.8I..Yj..Z4..R!.....^.8..W.Z |
| 161e0 | 2a da f8 a8 d2 a6 4a aa 4f 90 54 7c 0a fe c5 15 cc 92 51 71 5a a8 50 61 c8 90 a5 33 2d 84 b5 08 | *.....J.O.T|......QqZ.Pa...3-... |
| 16200 | 82 a5 02 1a 8d ac 2a de 00 63 37 09 25 3f 49 e4 44 a9 c5 eb 81 1f 34 91 28 a1 71 89 a6 10 9a 5f | ......*..c7.%?I.D.....4.(.q...._ |
| 16220 | 85 e4 34 d2 99 63 08 09 c2 39 6a 21 20 a1 e0 c6 0d 05 8d 6a 51 ba 81 a6 85 9a 36 2d 2a 20 79 f5 | ..4..c...9j!.......jQ.....6-*.y. |
| 16240 | 09 09 15 43 40 14 9d 79 a3 02 92 22 a2 b4 18 ae a5 d5 02 89 95 16 0c 15 19 c1 d1 42 13 ae 16 bd | ...C@..y..."...............B.... |
| 16260 | 70 55 79 d1 66 d5 97 13 91 dc 74 92 22 6a c8 10 14 14 de c0 92 84 25 8a 10 43 7c 2b fc ca 81 46 | pUy.f.....t."j........%..C|+...F |
| 16280 | a8 cd 21 a5 1a fd c2 09 59 67 a9 ee 2e e4 7c 91 23 87 52 ad 28 94 1a c9 11 02 5f 58 95 2a 15 5e | ..!.....Yg....|.#.R.(....._X.*.^ |
| 162a0 | 18 aa 50 f4 13 15 bd 18 52 05 59 55 04 f8 82 53 90 08 23 8c 2b 48 28 62 d5 2b 8a e0 62 d6 27 6f | ..P.....R.YU...S..#.+H(b.+..b.'o |
| 162c0 | 28 42 85 30 a1 40 e5 4a 2b 94 80 91 84 0c 69 44 e1 c7 10 0a e8 f0 45 14 72 24 22 47 2b 3b 64 80 | (B.0.@.J+.....iD......E.r$"G+;d. |
| 162e0 | c8 2f 8d 48 d2 12 09 43 f0 21 c7 10 8c 8f 71 92 43 21 31 7a 96 03 02 42 1c d2 48 2b 51 34 c2 47 | ./.H...C.!....q.C!1z...B..H+Q4.G |
| 16300 | 23 16 35 42 49 14 39 48 62 48 1c 6f d0 82 c3 27 86 30 81 4b 28 48 a8 61 88 30 0a ad f1 49 0b 55 | #.5BI.9HbH.o...'.0.K(H.a.0...I.U |
| 16320 | bc f1 42 2f b4 d8 a6 42 15 60 d0 62 08 9a 2a 20 11 ca 19 2a d0 e2 0a 98 ae e0 f0 42 09 b0 c8 a1 | ..B/...B.`.b..*....*.......B.... |
| 16340 | 83 03 94 20 30 84 0b 49 28 d0 0a 16 4b 48 42 ca 0a aa 44 41 53 2d 68 48 d2 08 50 68 24 56 0b 4e | ....0..I(...KHB...DAS-hH..Ph$V.N |
| 16360 | 39 50 32 1e 09 08 c8 21 49 2d 11 f0 c1 29 25 43 2c c1 12 1a 5f 0c 81 45 40 00 3b 00 00 00 00 00 | 9P2....!I-...)%C,..._..E@.;..... |
| 16380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 163a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 163c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 163e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16400 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 63 67 69 2d 62 69 6e 2f 00 00 | proxylab-handout/tiny/cgi-bin/.. |
| 16420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16460 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000755.0006626.0000144.0000 |
| 16480 | 30 30 30 30 30 30 30 00 31 33 35 36 33 33 31 30 34 35 37 00 30 31 34 36 36 35 00 20 35 00 00 00 | 0000000.13563310457.014665..5... |
| 164a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 164c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 164e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16500 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 16520 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 16540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 165a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 165c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 165e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16600 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 63 67 69 2d 62 69 6e 2f 61 64 | proxylab-handout/tiny/cgi-bin/ad |
| 16620 | 64 65 72 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | der.c........................... |
| 16640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16660 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 16680 | 30 30 30 31 37 35 31 00 31 32 34 32 36 35 30 33 37 30 33 00 30 31 36 31 30 37 00 20 30 00 00 00 | 0001751.12426503703.016107..0... |
| 166a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 166c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 166e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16700 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 16720 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 16740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 167a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 167c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 167e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16800 | 2f 2a 0a 20 2a 20 61 64 64 65 72 2e 63 20 2d 20 61 20 6d 69 6e 69 6d 61 6c 20 43 47 49 20 70 72 | /*..*.adder.c.-.a.minimal.CGI.pr |
| 16820 | 6f 67 72 61 6d 20 74 68 61 74 20 61 64 64 73 20 74 77 6f 20 6e 75 6d 62 65 72 73 20 74 6f 67 65 | ogram.that.adds.two.numbers.toge |
| 16840 | 74 68 65 72 0a 20 2a 2f 0a 2f 2a 20 24 62 65 67 69 6e 20 61 64 64 65 72 20 2a 2f 0a 23 69 6e 63 | ther..*/./*.$begin.adder.*/.#inc |
| 16860 | 6c 75 64 65 20 22 63 73 61 70 70 2e 68 22 0a 0a 69 6e 74 20 6d 61 69 6e 28 76 6f 69 64 29 20 7b | lude."csapp.h"..int.main(void).{ |
| 16880 | 0a 20 20 20 20 63 68 61 72 20 2a 62 75 66 2c 20 2a 70 3b 0a 20 20 20 20 63 68 61 72 20 61 72 67 | .....char.*buf,.*p;.....char.arg |
| 168a0 | 31 5b 4d 41 58 4c 49 4e 45 5d 2c 20 61 72 67 32 5b 4d 41 58 4c 49 4e 45 5d 2c 20 63 6f 6e 74 65 | 1[MAXLINE],.arg2[MAXLINE],.conte |
| 168c0 | 6e 74 5b 4d 41 58 4c 49 4e 45 5d 3b 0a 20 20 20 20 69 6e 74 20 6e 31 3d 30 2c 20 6e 32 3d 30 3b | nt[MAXLINE];.....int.n1=0,.n2=0; |
| 168e0 | 0a 0a 20 20 20 20 2f 2a 20 45 78 74 72 61 63 74 20 74 68 65 20 74 77 6f 20 61 72 67 75 6d 65 6e | ....../*.Extract.the.two.argumen |
| 16900 | 74 73 20 2a 2f 0a 20 20 20 20 69 66 20 28 28 62 75 66 20 3d 20 67 65 74 65 6e 76 28 22 51 55 45 | ts.*/.....if.((buf.=.getenv("QUE |
| 16920 | 52 59 5f 53 54 52 49 4e 47 22 29 29 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 09 70 20 3d 20 73 74 72 | RY_STRING")).!=.NULL).{..p.=.str |
| 16940 | 63 68 72 28 62 75 66 2c 20 27 26 27 29 3b 0a 09 2a 70 20 3d 20 27 5c 30 27 3b 0a 09 73 74 72 63 | chr(buf,.'&');..*p.=.'\0';..strc |
| 16960 | 70 79 28 61 72 67 31 2c 20 62 75 66 29 3b 0a 09 73 74 72 63 70 79 28 61 72 67 32 2c 20 70 2b 31 | py(arg1,.buf);..strcpy(arg2,.p+1 |
| 16980 | 29 3b 0a 09 6e 31 20 3d 20 61 74 6f 69 28 61 72 67 31 29 3b 0a 09 6e 32 20 3d 20 61 74 6f 69 28 | );..n1.=.atoi(arg1);..n2.=.atoi( |
| 169a0 | 61 72 67 32 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 4d 61 6b 65 20 74 68 65 20 72 65 | arg2);.....}....../*.Make.the.re |
| 169c0 | 73 70 6f 6e 73 65 20 62 6f 64 79 20 2a 2f 0a 20 20 20 20 73 70 72 69 6e 74 66 28 63 6f 6e 74 65 | sponse.body.*/.....sprintf(conte |
| 169e0 | 6e 74 2c 20 22 57 65 6c 63 6f 6d 65 20 74 6f 20 61 64 64 2e 63 6f 6d 3a 20 22 29 3b 0a 20 20 20 | nt,."Welcome.to.add.com:.");.... |
| 16a00 | 20 73 70 72 69 6e 74 66 28 63 6f 6e 74 65 6e 74 2c 20 22 25 73 54 48 45 20 49 6e 74 65 72 6e 65 | .sprintf(content,."%sTHE.Interne |
| 16a20 | 74 20 61 64 64 69 74 69 6f 6e 20 70 6f 72 74 61 6c 2e 5c 72 5c 6e 3c 70 3e 22 2c 20 63 6f 6e 74 | t.addition.portal.\r\n<p>",.cont |
| 16a40 | 65 6e 74 29 3b 0a 20 20 20 20 73 70 72 69 6e 74 66 28 63 6f 6e 74 65 6e 74 2c 20 22 25 73 54 68 | ent);.....sprintf(content,."%sTh |
| 16a60 | 65 20 61 6e 73 77 65 72 20 69 73 3a 20 25 64 20 2b 20 25 64 20 3d 20 25 64 5c 72 5c 6e 3c 70 3e | e.answer.is:.%d.+.%d.=.%d\r\n<p> |
| 16a80 | 22 2c 20 0a 09 20 20 20 20 63 6f 6e 74 65 6e 74 2c 20 6e 31 2c 20 6e 32 2c 20 6e 31 20 2b 20 6e | ",.......content,.n1,.n2,.n1.+.n |
| 16aa0 | 32 29 3b 0a 20 20 20 20 73 70 72 69 6e 74 66 28 63 6f 6e 74 65 6e 74 2c 20 22 25 73 54 68 61 6e | 2);.....sprintf(content,."%sThan |
| 16ac0 | 6b 73 20 66 6f 72 20 76 69 73 69 74 69 6e 67 21 5c 72 5c 6e 22 2c 20 63 6f 6e 74 65 6e 74 29 3b | ks.for.visiting!\r\n",.content); |
| 16ae0 | 0a 20 20 0a 20 20 20 20 2f 2a 20 47 65 6e 65 72 61 74 65 20 74 68 65 20 48 54 54 50 20 72 65 73 | ......../*.Generate.the.HTTP.res |
| 16b00 | 70 6f 6e 73 65 20 2a 2f 0a 20 20 20 20 70 72 69 6e 74 66 28 22 43 6f 6e 6e 65 63 74 69 6f 6e 3a | ponse.*/.....printf("Connection: |
| 16b20 | 20 63 6c 6f 73 65 5c 72 5c 6e 22 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 43 6f 6e 74 65 6e | .close\r\n");.....printf("Conten |
| 16b40 | 74 2d 6c 65 6e 67 74 68 3a 20 25 64 5c 72 5c 6e 22 2c 20 28 69 6e 74 29 73 74 72 6c 65 6e 28 63 | t-length:.%d\r\n",.(int)strlen(c |
| 16b60 | 6f 6e 74 65 6e 74 29 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 43 6f 6e 74 65 6e 74 2d 74 79 | ontent));.....printf("Content-ty |
| 16b80 | 70 65 3a 20 74 65 78 74 2f 68 74 6d 6c 5c 72 5c 6e 5c 72 5c 6e 22 29 3b 0a 20 20 20 20 70 72 69 | pe:.text/html\r\n\r\n");.....pri |
| 16ba0 | 6e 74 66 28 22 25 73 22 2c 20 63 6f 6e 74 65 6e 74 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 73 | ntf("%s",.content);.....fflush(s |
| 16bc0 | 74 64 6f 75 74 29 3b 0a 0a 20 20 20 20 65 78 69 74 28 30 29 3b 0a 7d 0a 2f 2a 20 24 65 6e 64 20 | tdout);......exit(0);.}./*.$end. |
| 16be0 | 61 64 64 65 72 20 2a 2f 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | adder.*/........................ |
| 16c00 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 63 67 69 2d 62 69 6e 2f 4d 61 | proxylab-handout/tiny/cgi-bin/Ma |
| 16c20 | 6b 65 66 69 6c 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | kefile.......................... |
| 16c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16c60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 16c80 | 30 30 30 30 31 37 30 00 30 37 34 37 37 30 33 36 34 34 36 00 30 31 36 33 33 35 00 20 30 00 00 00 | 0000170.07477036446.016335..0... |
| 16ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16d00 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 16d20 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 16d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16e00 | 43 43 20 3d 20 67 63 63 0a 43 46 4c 41 47 53 20 3d 20 2d 4f 32 20 2d 57 61 6c 6c 20 2d 49 20 2e | CC.=.gcc.CFLAGS.=.-O2.-Wall.-I.. |
| 16e20 | 2e 0a 0a 61 6c 6c 3a 20 61 64 64 65 72 0a 0a 61 64 64 65 72 3a 20 61 64 64 65 72 2e 63 0a 09 24 | ...all:.adder..adder:.adder.c..$ |
| 16e40 | 28 43 43 29 20 24 28 43 46 4c 41 47 53 29 20 2d 6f 20 61 64 64 65 72 20 61 64 64 65 72 2e 63 0a | (CC).$(CFLAGS).-o.adder.adder.c. |
| 16e60 | 0a 63 6c 65 61 6e 3a 0a 09 72 6d 20 2d 66 20 61 64 64 65 72 20 2a 7e 0a 00 00 00 00 00 00 00 00 | .clean:..rm.-f.adder.*~......... |
| 16e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17000 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 52 45 41 44 4d 45 00 00 00 00 | proxylab-handout/tiny/README.... |
| 17020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17060 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 17080 | 30 30 30 32 34 31 31 00 30 37 34 37 37 30 33 36 37 30 31 00 30 31 34 32 33 37 00 20 30 00 00 00 | 0002411.07477036701.014237..0... |
| 170a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 170c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 170e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17100 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 17120 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 17140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 171a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 171c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 171e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17200 | 54 69 6e 79 20 57 65 62 20 73 65 72 76 65 72 0a 44 61 76 65 20 4f 27 48 61 6c 6c 61 72 6f 6e 0a | Tiny.Web.server.Dave.O'Hallaron. |
| 17220 | 43 61 72 6e 65 67 69 65 20 4d 65 6c 6c 6f 6e 20 55 6e 69 76 65 72 73 69 74 79 0a 0a 54 68 69 73 | Carnegie.Mellon.University..This |
| 17240 | 20 69 73 20 74 68 65 20 68 6f 6d 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 54 | .is.the.home.directory.for.the.T |
| 17260 | 69 6e 79 20 73 65 72 76 65 72 2c 20 61 20 32 30 30 2d 6c 69 6e 65 20 57 65 62 0a 73 65 72 76 65 | iny.server,.a.200-line.Web.serve |
| 17280 | 72 20 74 68 61 74 20 77 65 20 75 73 65 20 69 6e 20 22 31 35 2d 32 31 33 3a 20 49 6e 74 72 6f 20 | r.that.we.use.in."15-213:.Intro. |
| 172a0 | 74 6f 20 43 6f 6d 70 75 74 65 72 20 53 79 73 74 65 6d 73 22 20 61 74 20 43 61 72 6e 65 67 69 65 | to.Computer.Systems".at.Carnegie |
| 172c0 | 0a 4d 65 6c 6c 6f 6e 20 55 6e 69 76 65 72 73 69 74 79 2e 20 20 54 69 6e 79 20 75 73 65 73 20 74 | .Mellon.University...Tiny.uses.t |
| 172e0 | 68 65 20 47 45 54 20 6d 65 74 68 6f 64 20 74 6f 20 73 65 72 76 65 20 73 74 61 74 69 63 20 63 6f | he.GET.method.to.serve.static.co |
| 17300 | 6e 74 65 6e 74 0a 28 74 65 78 74 2c 20 48 54 4d 4c 2c 20 47 49 46 2c 20 61 6e 64 20 4a 50 47 20 | ntent.(text,.HTML,.GIF,.and.JPG. |
| 17320 | 66 69 6c 65 73 29 20 6f 75 74 20 6f 66 20 2e 2f 20 61 6e 64 20 74 6f 20 73 65 72 76 65 20 64 79 | files).out.of../.and.to.serve.dy |
| 17340 | 6e 61 6d 69 63 0a 63 6f 6e 74 65 6e 74 20 62 79 20 72 75 6e 6e 69 6e 67 20 43 47 49 20 70 72 6f | namic.content.by.running.CGI.pro |
| 17360 | 67 72 61 6d 73 20 6f 75 74 20 6f 66 20 2e 2f 63 67 69 2d 62 69 6e 2e 20 54 68 65 20 64 65 66 61 | grams.out.of../cgi-bin..The.defa |
| 17380 | 75 6c 74 20 0a 70 61 67 65 20 69 73 20 68 6f 6d 65 2e 68 74 6d 6c 20 28 72 61 74 68 65 72 20 74 | ult..page.is.home.html.(rather.t |
| 173a0 | 68 61 6e 20 69 6e 64 65 78 2e 68 74 6d 6c 29 20 73 6f 20 74 68 61 74 20 77 65 20 63 61 6e 20 76 | han.index.html).so.that.we.can.v |
| 173c0 | 69 65 77 0a 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 64 69 72 65 63 74 6f 72 | iew.the.contents.of.the.director |
| 173e0 | 79 20 66 72 6f 6d 20 61 20 62 72 6f 77 73 65 72 2e 0a 0a 54 69 6e 79 20 69 73 20 6e 65 69 74 68 | y.from.a.browser...Tiny.is.neith |
| 17400 | 65 72 20 73 65 63 75 72 65 20 6e 6f 72 20 63 6f 6d 70 6c 65 74 65 2c 20 62 75 74 20 69 74 20 67 | er.secure.nor.complete,.but.it.g |
| 17420 | 69 76 65 73 20 73 74 75 64 65 6e 74 73 20 61 6e 0a 69 64 65 61 20 6f 66 20 68 6f 77 20 61 20 72 | ives.students.an.idea.of.how.a.r |
| 17440 | 65 61 6c 20 57 65 62 20 73 65 72 76 65 72 20 77 6f 72 6b 73 2e 20 55 73 65 20 66 6f 72 20 69 6e | eal.Web.server.works..Use.for.in |
| 17460 | 73 74 72 75 63 74 69 6f 6e 61 6c 20 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e 0a 0a 54 68 65 20 | structional.purposes.only...The. |
| 17480 | 63 6f 64 65 20 63 6f 6d 70 69 6c 65 73 20 61 6e 64 20 72 75 6e 73 20 63 6c 65 61 6e 6c 79 20 75 | code.compiles.and.runs.cleanly.u |
| 174a0 | 73 69 6e 67 20 67 63 63 20 32 2e 39 35 2e 33 20 0a 6f 6e 20 61 20 4c 69 6e 75 78 20 32 2e 32 2e | sing.gcc.2.95.3..on.a.Linux.2.2. |
| 174c0 | 32 30 20 6b 65 72 6e 65 6c 2e 0a 0a 54 6f 20 69 6e 73 74 61 6c 6c 20 54 69 6e 79 3a 0a 20 20 20 | 20.kernel...To.install.Tiny:.... |
| 174e0 | 54 79 70 65 20 22 74 61 72 20 78 76 66 20 74 69 6e 79 2e 74 61 72 22 20 69 6e 20 61 20 63 6c 65 | Type."tar.xvf.tiny.tar".in.a.cle |
| 17500 | 61 6e 20 64 69 72 65 63 74 6f 72 79 2e 20 0a 0a 54 6f 20 72 75 6e 20 54 69 6e 79 3a 0a 20 20 20 | an.directory....To.run.Tiny:.... |
| 17520 | 52 75 6e 20 22 74 69 6e 79 20 3c 70 6f 72 74 3e 22 20 6f 6e 20 74 68 65 20 73 65 72 76 65 72 20 | Run."tiny.<port>".on.the.server. |
| 17540 | 6d 61 63 68 69 6e 65 2c 20 0a 09 65 2e 67 2e 2c 20 22 74 69 6e 79 20 38 30 30 30 22 2e 0a 20 20 | machine,...e.g.,."tiny.8000".... |
| 17560 | 20 50 6f 69 6e 74 20 79 6f 75 72 20 62 72 6f 77 73 65 72 20 61 74 20 54 69 6e 79 3a 20 0a 09 73 | .Point.your.browser.at.Tiny:...s |
| 17580 | 74 61 74 69 63 20 63 6f 6e 74 65 6e 74 3a 20 68 74 74 70 3a 2f 2f 3c 68 6f 73 74 3e 3a 38 30 30 | tatic.content:.http://<host>:800 |
| 175a0 | 30 0a 09 64 79 6e 61 6d 69 63 20 63 6f 6e 74 65 6e 74 3a 20 68 74 74 70 3a 2f 2f 3c 68 6f 73 74 | 0..dynamic.content:.http://<host |
| 175c0 | 3e 3a 38 30 30 30 2f 63 67 69 2d 62 69 6e 2f 61 64 64 65 72 3f 31 26 32 0a 0a 46 69 6c 65 73 3a | >:8000/cgi-bin/adder?1&2..Files: |
| 175e0 | 0a 20 20 74 69 6e 79 2e 74 61 72 09 09 41 72 63 68 69 76 65 20 6f 66 20 65 76 65 72 79 74 68 69 | ...tiny.tar..Archive.of.everythi |
| 17600 | 6e 67 20 69 6e 20 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 0a 20 20 74 69 6e 79 2e 63 09 09 54 | ng.in.this.directory...tiny.c..T |
| 17620 | 68 65 20 54 69 6e 79 20 73 65 72 76 65 72 0a 20 20 4d 61 6b 65 66 69 6c 65 09 09 4d 61 6b 65 66 | he.Tiny.server...Makefile..Makef |
| 17640 | 69 6c 65 20 66 6f 72 20 74 69 6e 79 2e 63 0a 20 20 68 6f 6d 65 2e 68 74 6d 6c 09 09 54 65 73 74 | ile.for.tiny.c...home.html..Test |
| 17660 | 20 48 54 4d 4c 20 70 61 67 65 0a 20 20 67 6f 64 7a 69 6c 6c 61 2e 67 69 66 09 09 49 6d 61 67 65 | .HTML.page...godzilla.gif..Image |
| 17680 | 20 65 6d 62 65 64 64 65 64 20 69 6e 20 68 6f 6d 65 2e 68 74 6d 6c 0a 20 20 52 45 41 44 4d 45 09 | .embedded.in.home.html...README. |
| 176a0 | 09 54 68 69 73 20 66 69 6c 65 09 0a 20 20 63 67 69 2d 62 69 6e 2f 61 64 64 65 72 2e 63 09 43 47 | .This.file....cgi-bin/adder.c.CG |
| 176c0 | 49 20 70 72 6f 67 72 61 6d 20 74 68 61 74 20 61 64 64 73 20 74 77 6f 20 6e 75 6d 62 65 72 73 0a | I.program.that.adds.two.numbers. |
| 176e0 | 20 20 63 67 69 2d 62 69 6e 2f 4d 61 6b 65 66 69 6c 65 09 4d 61 6b 65 66 69 6c 65 20 66 6f 72 20 | ..cgi-bin/Makefile.Makefile.for. |
| 17700 | 61 64 64 65 72 2e 63 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | adder.c......................... |
| 17720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 177a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 177c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 177e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17800 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 4d 61 6b 65 66 69 6c 65 00 00 | proxylab-handout/tiny/Makefile.. |
| 17820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17860 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 17880 | 30 30 30 30 35 37 32 00 31 32 33 37 33 32 34 36 34 36 31 00 30 31 35 30 32 32 00 20 30 00 00 00 | 0000572.12373246461.015022..0... |
| 178a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 178c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 178e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17900 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 17920 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 17940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 179a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 179c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 179e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17a00 | 43 43 20 3d 20 67 63 63 0a 43 46 4c 41 47 53 20 3d 20 2d 4f 32 20 2d 57 61 6c 6c 20 2d 49 20 2e | CC.=.gcc.CFLAGS.=.-O2.-Wall.-I.. |
| 17a20 | 0a 0a 23 20 54 68 69 73 20 66 6c 61 67 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 50 74 68 72 65 | ..#.This.flag.includes.the.Pthre |
| 17a40 | 61 64 73 20 6c 69 62 72 61 72 79 20 6f 6e 20 61 20 4c 69 6e 75 78 20 62 6f 78 2e 0a 23 20 4f 74 | ads.library.on.a.Linux.box..#.Ot |
| 17a60 | 68 65 72 73 20 73 79 73 74 65 6d 73 20 77 69 6c 6c 20 70 72 6f 62 61 62 6c 79 20 72 65 71 75 69 | hers.systems.will.probably.requi |
| 17a80 | 72 65 20 73 6f 6d 65 74 68 69 6e 67 20 64 69 66 66 65 72 65 6e 74 2e 0a 4c 49 42 20 3d 20 2d 6c | re.something.different..LIB.=.-l |
| 17aa0 | 70 74 68 72 65 61 64 0a 0a 61 6c 6c 3a 20 74 69 6e 79 20 63 67 69 0a 0a 74 69 6e 79 3a 20 74 69 | pthread..all:.tiny.cgi..tiny:.ti |
| 17ac0 | 6e 79 2e 63 20 63 73 61 70 70 2e 6f 0a 09 24 28 43 43 29 20 24 28 43 46 4c 41 47 53 29 20 2d 6f | ny.c.csapp.o..$(CC).$(CFLAGS).-o |
| 17ae0 | 20 74 69 6e 79 20 74 69 6e 79 2e 63 20 63 73 61 70 70 2e 6f 20 24 28 4c 49 42 29 0a 0a 63 73 61 | .tiny.tiny.c.csapp.o.$(LIB)..csa |
| 17b00 | 70 70 2e 6f 3a 20 63 73 61 70 70 2e 63 0a 09 24 28 43 43 29 20 24 28 43 46 4c 41 47 53 29 20 2d | pp.o:.csapp.c..$(CC).$(CFLAGS).- |
| 17b20 | 63 20 63 73 61 70 70 2e 63 0a 0a 63 67 69 3a 0a 09 28 63 64 20 63 67 69 2d 62 69 6e 3b 20 6d 61 | c.csapp.c..cgi:..(cd.cgi-bin;.ma |
| 17b40 | 6b 65 29 0a 0a 63 6c 65 61 6e 3a 0a 09 72 6d 20 2d 66 20 2a 2e 6f 20 74 69 6e 79 20 2a 7e 0a 09 | ke)..clean:..rm.-f.*.o.tiny.*~.. |
| 17b60 | 28 63 64 20 63 67 69 2d 62 69 6e 3b 20 6d 61 6b 65 20 63 6c 65 61 6e 29 0a 0a 00 00 00 00 00 00 | (cd.cgi-bin;.make.clean)........ |
| 17b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17c00 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 74 69 6e 79 2f 67 6f 64 7a 69 6c 6c 61 2e 6a | proxylab-handout/tiny/godzilla.j |
| 17c20 | 70 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | pg.............................. |
| 17c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17c60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 17c80 | 30 30 32 35 31 35 32 00 30 37 35 31 30 33 36 33 31 31 31 00 30 31 35 36 35 37 00 20 30 00 00 00 | 0025152.07510363111.015657..0... |
| 17ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17d00 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 17d20 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 17d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17e00 | ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 00 01 00 00 ff fe 00 59 43 52 45 41 54 4f 52 3a | ......JFIF.............YCREATOR: |
| 17e20 | 20 58 56 20 56 65 72 73 69 6f 6e 20 33 2e 31 30 61 20 20 52 65 76 3a 20 31 32 2f 32 39 2f 39 34 | .XV.Version.3.10a..Rev:.12/29/94 |
| 17e40 | 20 28 50 4e 47 20 70 61 74 63 68 20 31 2e 32 29 20 20 51 75 61 6c 69 74 79 20 3d 20 39 35 2c 20 | .(PNG.patch.1.2)..Quality.=.95,. |
| 17e60 | 53 6d 6f 6f 74 68 69 6e 67 20 3d 20 33 30 0a ff db 00 43 00 02 01 01 01 01 01 02 01 01 01 02 02 | Smoothing.=.30....C............. |
| 17e80 | 02 02 02 04 03 02 02 02 02 05 04 04 03 04 06 05 06 06 06 05 06 06 06 07 09 08 06 07 09 07 06 06 | ................................ |
| 17ea0 | 08 0b 08 09 0a 0a 0a 0a 0a 06 08 0b 0c 0b 0a 0c 09 0a 0a 0a ff db 00 43 01 02 02 02 02 02 02 05 | .......................C........ |
| 17ec0 | 03 03 05 0a 07 06 07 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a | ................................ |
| 17ee0 | 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a ff c0 00 11 08 00 7d | ...............................} |
| 17f00 | 00 64 03 01 22 00 02 11 01 03 11 01 ff c4 00 1f 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 | .d.."........................... |
| 17f20 | 00 00 01 02 03 04 05 06 07 08 09 0a 0b ff c4 00 b5 10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 | ................................ |
| 17f40 | 01 7d 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07 22 71 14 32 81 91 a1 08 23 42 b1 c1 15 52 | .}........!1A..Qa."q.2....#B...R |
| 17f60 | d1 f0 24 33 62 72 82 09 0a 16 17 18 19 1a 25 26 27 28 29 2a 34 35 36 37 38 39 3a 43 44 45 46 47 | ..$3br........%&'()*456789:CDEFG |
| 17f80 | 48 49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68 69 6a 73 74 75 76 77 78 79 7a 83 84 85 86 87 | HIJSTUVWXYZcdefghijstuvwxyz..... |
| 17fa0 | 88 89 8a 92 93 94 95 96 97 98 99 9a a2 a3 a4 a5 a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 | ................................ |
| 17fc0 | c4 c5 c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da e1 e2 e3 e4 e5 e6 e7 e8 e9 ea f1 f2 f3 f4 f5 f6 | ................................ |
| 17fe0 | f7 f8 f9 fa ff c4 00 1f 01 00 03 01 01 01 01 01 01 01 01 01 00 00 00 00 00 00 01 02 03 04 05 06 | ................................ |
| 18000 | 07 08 09 0a 0b ff c4 00 b5 11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77 00 01 02 03 11 04 | .........................w...... |
| 18020 | 05 21 31 06 12 41 51 07 61 71 13 22 32 81 08 14 42 91 a1 b1 c1 09 23 33 52 f0 15 62 72 d1 0a 16 | .!1..AQ.aq."2...B.....#3R..br... |
| 18040 | 24 34 e1 25 f1 17 18 19 1a 26 27 28 29 2a 35 36 37 38 39 3a 43 44 45 46 47 48 49 4a 53 54 55 56 | $4.%.....&'()*56789:CDEFGHIJSTUV |
| 18060 | 57 58 59 5a 63 64 65 66 67 68 69 6a 73 74 75 76 77 78 79 7a 82 83 84 85 86 87 88 89 8a 92 93 94 | WXYZcdefghijstuvwxyz............ |
| 18080 | 95 96 97 98 99 9a a2 a3 a4 a5 a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 c4 c5 c6 c7 c8 c9 | ................................ |
| 180a0 | ca d2 d3 d4 d5 d6 d7 d8 d9 da e2 e3 e4 e5 e6 e7 e8 e9 ea f2 f3 f4 f5 f6 f7 f8 f9 fa ff da 00 0c | ................................ |
| 180c0 | 03 01 00 02 11 03 11 00 3f 00 fa 45 3c 6b e2 a9 6e 34 9b 3d 57 c6 4d 72 a6 d9 af 5a d3 50 b7 6d | ........?..E<k..n4.=W.Mr...Z.P.m |
| 180e0 | ea cf 20 58 5d 99 77 0e 70 04 6e 33 b0 fd fe d9 d4 d0 f5 cf 18 b6 91 63 24 d2 5c c4 6d 2d 4d ca | ...X].w.p.n3...........c$.\.m-M. |
| 18100 | 4d 65 70 66 84 cb 21 c6 08 27 90 38 27 a2 cb ce 31 c5 73 f6 0c c2 5b 79 2e 75 58 9a 1b 9f f4 a2 | Mepf..!..'.8'...1.s...[y.uX..... |
| 18120 | 75 82 3e 48 91 b2 1d 5f a0 c9 da 44 9c 99 48 21 d4 63 23 63 c2 fa 86 a1 68 f6 d2 be 9b 34 27 cb | u.>H..._...D..H!.c#c....h....4'. |
| 18140 | 69 ee d3 4c b9 47 8d 27 70 5b e6 4d a4 96 75 da 64 4e 88 b8 d8 0e 49 3f b3 c2 9c 3d 9b e5 8a f4 | i..L.G.'p[.M..u.dN....I?...=.... |
| 18160 | d3 bb 7a 6d be bf 26 8f 9d af 28 f3 46 cf de 4e f7 ef b7 ad 96 cd fb cb ef 3a 73 a9 df cb 68 f3 | ..zm..&...(.F..N.........:s...h. |
| 18180 | 5e 5d da 5e 5d 41 64 b0 05 9e e2 58 24 dd 29 56 0e 4f 05 7e f0 3b b3 98 b9 00 e3 15 3d f4 b7 96 | ^].^]Ad....X$.)V.O.~.;......=... |
| 181a0 | 97 52 68 76 fa ba cd 1d 8d b2 5b c5 6f 35 c4 84 6f 91 8f ca 24 71 c9 e9 95 ce 14 0f 33 20 e7 3c | .Rhv......[.o5..o...$q......3..< |
| 181c0 | 77 8b fe 26 78 2b e1 2f 86 ad 3c 57 e3 df 10 d9 c4 b2 db b8 59 6f 60 c6 64 11 c9 2a f1 1a b6 df | w..&x+./..<W........Yo`.d..*.... |
| 181e0 | 91 64 58 db 00 93 b4 37 25 45 63 ea 1f 1f 7c 21 73 f0 e9 bc 75 e1 8d 42 4d 46 0d 0b c3 0d a9 0b | .dX....7%Ec...|!s...u..BMF...... |
| 18200 | 7f 26 17 2f e7 2e 11 66 2f b6 19 6d c1 7c 18 e3 b8 8e 62 57 7a ed 4c 13 e4 e3 b3 4c bf 2e 5c 95 | .&./...f/..m.|....bWz.L....L..\. |
| 18220 | 1d e4 93 76 5a b7 e8 96 db f9 7c 43 c2 65 98 9c 6c a5 28 45 db 4b bb 68 b6 d3 ce ce dd dd 95 da | ...vZ.....|C.e..l.(E.K.h........ |
| 18240 | dc e5 7f 6b 8f da 77 e3 6f c3 7f 01 ea 2b fb 34 78 c6 df c3 be 27 f0 fe bd 63 a7 cf 16 b9 78 a4 | ...k..w.o....+.4x....'...c....x. |
| 18260 | 5f 42 e3 1e 5d aa ca 3f 7d 1b 99 23 3e 60 25 c6 3e 6c 2b 6e 5f 95 bf 69 df 06 bf 87 7c 5f e1 af | _B..]..?}..#>`%.>l+n_..i....|_.. |
| 18280 | 87 de 19 f1 0d e7 89 bc 7b ae ea 62 e7 c4 8a fa b8 9b ed 77 72 34 64 ad b3 2b ca b0 2c 4b 94 0d | ........{..b.......wr4d..+..,K.. |
| 182a0 | 21 2a 0c 20 2a e7 20 fb ec de 3c d5 3f 68 b6 b9 f0 0e 99 e0 9d 3b c4 9a 9f c3 4d 2d bc 48 de 21 | !*..*.....<.?h.......;....M-.H.! |
| 182c0 | d5 35 04 8c 43 2b fd 99 a1 74 fd e1 92 78 d3 cd 91 18 4a a5 7c 98 62 dc 49 38 5f 1c f1 7f 8b f5 | .5..C+...t...x....J.|.b.I8_..... |
| 182e0 | bf 86 f2 f8 db e2 67 8e 25 b1 d5 2e 74 cd 66 2b 4b 4d 46 7d 11 5d fc d6 89 e5 6b 58 08 89 21 26 | ......g.%...t.f+KMF}.]....kX..!& |
| 18300 | 38 04 31 ba 3a 82 0c d2 ed 5f 90 57 e7 38 cc d2 39 8d 49 d6 5e eb 7b 5e da 25 6d 15 af 76 dd b5 | 8.1.:...._.W.8..9.I.^.{^.%m..v.. |
| 18320 | be ab a6 c7 dd 65 d9 66 1f 09 46 3c cb 5b 5d dd 2b 3b 5d 59 6c d2 72 ba 6b 97 45 67 ab b3 3e 7a | .....e.f..F<.[].+;]Yl.r.k.Eg..>z |
| 18340 | f8 da 9e 23 f8 79 ae 43 e0 af 84 ba b6 b1 7d 6b e2 02 b7 77 fe 1d 6d 55 ee 44 17 12 b0 dd 39 04 | ...#.y.C......}k...w..mU.D....9. |
| 18360 | 28 56 3f ea f2 46 55 09 dc cd bc 62 0f 1e e8 e9 3d 8e 82 be 1a f1 5f 89 a4 b2 31 bb a3 4b 2f 9a | (V?..FU....b....=....._...1..K/. |
| 18380 | d6 91 19 23 65 5f 23 ee 23 06 dc fb 14 95 76 0b b4 8d d9 1f 54 f8 7f e1 c7 8f bc 09 a1 0d 56 cb | ...#e_#.#.....v.....T.........V. |
| 183a0 | 44 d3 e2 f1 0f 8f b4 85 4b 6b 09 2c 96 7b 86 43 0c 4e b0 43 74 c5 30 a8 8b 1c 0c 92 0f 2e 47 0f | D.......Kk.,.{.C.N.Ct.0.......G. |
| 183c0 | 13 ae e6 5d fe 0b e3 4f 81 df 1e fe 13 f8 9b 54 16 7a 4d cd de a7 ac d8 c9 67 32 d8 5c 2b 26 ed | ...]...O.......T.zM......g2.\+&. |
| 183e0 | d0 dc 23 02 03 ac e0 c6 51 9f ca ca a9 ca a3 f6 1e 52 a9 29 43 d9 ae f7 e9 6b be dd 34 ec af 7b | ..#.....Q........R.)C....k..4..{ |
| 18400 | 75 b3 3b 27 83 a7 0c 45 e5 17 ab 7d 2e af 67 6b 7c ad a2 76 d7 6b 24 cc ff 00 d9 7b 44 f1 7f 88 | u.;'...E...}..gk|..v.k$....{D... |
| 18420 | be 1a 6b 77 fe 38 f8 c3 a3 f8 3b c3 b2 6a 06 de 5d 7a ee 69 85 f9 9d c3 32 5b 84 85 8c eb 0b 0d | ..kw.8....;..j..]z.i....2[...... |
| 18440 | db a5 2a 50 79 84 73 82 53 a6 f8 5d fb 0a fc 59 f8 83 e0 4b 1f 1d f8 37 50 fb 2e a5 a3 eb b7 16 | ..*Py.s.S..]...Y...K...7P....... |
| 18460 | c9 6d e2 8d 4c 69 d7 5a 8c 31 ac 32 43 3a 19 5d b6 90 92 46 a0 00 bb 76 0d ac 59 d6 bd 87 c2 3f | .m..Li.Z.1.2C:.]...F...v..Y....? |
| 18480 | 00 fe 08 7e d1 9f 07 74 7d 6f f6 9a f8 97 69 e0 1f 14 de 69 96 da 76 9d a9 5a 68 a3 4e 85 a2 b7 | ...~...t}o....i....i..v..Zh.N... |
| 184a0 | 58 d5 63 9e 42 db a7 9e 58 92 4d b3 95 74 8c 72 54 16 8d 5b 07 c7 df b5 8e 97 f0 ff 00 e0 2f 87 | X.c.B...X.M..t.rT..[........../. |
| 184c0 | 74 4f d9 eb c4 da 77 85 be c7 76 da 06 a7 7b ae 5d 45 7f 35 d0 ce f7 bb 16 a0 4e 4a 4f 85 97 cc | tO....w...v...{.]E.5......NJO... |
| 184e0 | 42 e8 5a 3f 96 46 64 00 69 ec da 9e af 4b d9 6d f7 ed b7 cb 76 67 2a 18 7c 2b 50 a9 14 e4 94 5f | B.Z?.Fd.i....K.m....vg*.|+P...._ |
| 18500 | e3 bc b5 6b d7 ba 6e da a6 cf 2c f1 cf ec 77 f1 d3 51 d5 3e d7 e0 4d 04 ea 1a b4 ba 8c f7 77 ba | ...k..n...,...w..Q.>..M.......w. |
| 18520 | 04 1a ba 6a 4d 1e 18 06 b9 f3 17 72 3c 6c 43 98 98 b6 f2 aa ec 59 95 37 57 d4 9f b2 f7 c4 4f 8e | ...jM......r<lC......Y.7W.....O. |
| 18540 | 1f b0 e7 c6 f9 be 1e fe d1 f6 7e 26 b8 d2 fc 53 6d 67 06 8b 79 ab 4e 81 2c 35 29 9f 6c aa a6 27 | ..........~&...Smg..y.N.,5).l..' |
| 18560 | 74 5f f8 f8 46 95 84 8a 48 ec 49 51 5f 04 a7 ed 3b f1 42 d2 e8 78 b3 fe 13 df 11 cb e2 48 6f 7e | t_..F...H.IQ_...;.B..x.......Ho~ |
| 18580 | d1 a9 78 8b 4c d4 88 75 8e 42 36 ec 38 1e 50 0e 73 e6 29 c1 f3 15 70 b8 cb 3f c5 9f b6 4f ed 1b | ..x.L..u.B6.8.P.s.)...p..?...O.. |
| 185a0 | e3 2b 24 d1 bc 47 f1 47 50 ba b5 b0 bd 17 d6 06 fd cb cd 69 75 95 25 d7 73 e5 25 2c a0 8e ca 41 | .+$..G.GP..........iu.%.s.%,...A |
| 185c0 | 65 da 58 b5 3a 35 e7 85 ab 1a b0 4e e9 d9 ea bc b4 77 bb f5 d5 3d 74 b5 8e 6a d4 e9 55 5e c5 d3 | e.X.:5.....N.....w...=t..j..U^.. |
| 185e0 | f7 6d df 6d b5 5a 7c ef ad dc 4f dd e4 f8 c7 e1 6d 36 e6 e7 40 f0 d7 c6 06 80 69 b7 0d 05 e5 a5 | .m.m.Z|...O.....m6..@.....i..... |
| 18600 | a5 c2 de 35 bc fc 3b 47 2b 21 f9 24 01 86 51 b0 ca 0a e4 0e 28 af c4 7f 85 1f 1b fe 18 78 33 49 | ...5..;G+!.$..Q.....(........x3I |
| 18620 | bc d2 fc 75 36 b7 ae de 4b 7a 27 fe d1 b0 f1 84 96 28 fb e2 8d 9b e4 5b 49 77 fe f0 be 1c b0 62 | ...u6...Kz'......(.....[Iw.....b |
| 18640 | 08 05 46 28 af a7 a5 c4 34 1d 34 ea 45 73 75 f7 53 fc cf 12 ae 49 97 c6 6d 39 4b ff 00 01 bf e3 | ..F(....4.4.Esu.S....I..m9K..... |
| 18660 | 74 7e a7 aa 5a 4b a8 43 6b 65 06 a4 b0 0b c6 8a d6 ce fa 04 29 22 f9 64 bc 44 64 00 ef 97 19 6f | t~..ZK.Cke..........)".d.Dd....o |
| 18680 | 93 6b 02 87 71 dc bc 9f c6 7f 88 de 1d f8 2b f0 f2 f7 c7 de 2f 95 a0 86 4b 68 e1 b0 9f 4b 76 0f | .k..q.........+...../...Kh...Kv. |
| 186a0 | 72 41 11 db ec 1c b1 56 95 91 79 05 d0 e4 9d eb 85 ae ea da 34 d2 c0 b3 5b b9 04 10 49 f6 0b 5b | rA.....V..y.........4...[...I..[ |
| 186c0 | 3b cb 40 63 9e 37 51 b9 48 61 f2 92 4f cb 19 3b 58 9d c0 e0 62 bc db f6 a9 fd 9d f5 6f da 1a df | ;.@c.7Q.Ha..O..;X...b.......o... |
| 186e0 | c1 7a 7f 87 1f 4d 8b 3a a4 f6 b6 5a b4 5a 8c a2 58 dd a3 29 0c fb 51 58 bc 46 4f 2d 24 70 99 50 | .z...M.:...Z.Z..X..)..QX.FO-$p.P |
| 18700 | 53 03 6a 9c 7d 7e 73 89 ad 82 ca ea 56 a7 f1 35 64 f6 b5 f4 be 9d 56 fa 5f 53 ce ca f0 b1 c6 e3 | S.j.}~s.....V..5d.....V._S...... |
| 18720 | e9 d0 a8 d7 2b dd db f9 7d e7 a3 e6 b5 f5 b5 d2 5e f6 ab b7 95 78 ef e2 cc 1f 0e 3e 19 58 7e d1 | ....+...}.......^....x.....>.X~. |
| 18740 | bf 16 96 cf c6 3a 5e b9 2d cd be 85 73 a4 5b 87 99 ee 23 64 55 47 47 9d 85 a1 63 17 9a f2 46 92 | .....:^.-...s.[...#dUGG...c...F. |
| 18760 | a4 85 8c 79 01 99 9f 07 f6 8f f8 ab 17 88 fc 4d a0 f8 1e ef e0 16 87 a2 6b 3f 11 7e 1c c6 9e 23 | ...y...........M........k?.~...# |
| 18780 | b8 d0 f4 91 e4 59 5b c1 99 a2 bd b6 8a 22 7c a3 12 c5 2f 9d b8 33 46 a8 a1 49 65 64 1f 48 78 87 | .....Y[......"|.../..3F..Ied.Hx. |
| 187a0 | f6 7b f1 97 83 3c 21 ac 78 eb c6 5a 76 ab 0e 97 17 83 da 4d 6f 4e b1 b7 82 d6 7f b5 c3 6a b0 dc | .{...<!.x..Zv......MoN.......j.. |
| 187c0 | 4a 90 30 68 5d d6 68 23 9d 44 78 5c b9 52 72 36 d7 c8 df 04 f4 6f 89 de 21 f8 ed f0 df c3 bf 01 | J.0h].h#.Dx\.Rr6.....o..!....... |
| 187e0 | fe 33 ea 1e 3c d0 7c 3d 6b 26 ab 19 9b c3 86 d2 fb 45 b5 37 0c 23 b7 85 e5 dc 0a 3b 13 84 52 d1 | .3..<.|=k&.......E.7.#.....;..R. |
| 18800 | 9f 34 c7 26 f0 76 9f cc 54 e5 ed b9 5d 9f 36 cf 75 65 af 6d 3b ef ad 8f b6 49 c6 73 50 bb 5a 5a | .4.&.v..T...].6.ue.m;....I.sP.ZZ |
| 18820 | d7 4e d6 69 ad 25 b3 ef 6b ea f4 4d bb fa 2f 81 be 05 fc 4a d0 6f fe 22 7c 74 f0 ae a9 73 e1 8d | .N.i.%..k..M../....J.o."|t...s.. |
| 18840 | 23 5b f0 87 87 e0 d2 ec 99 d1 df 55 b6 9f 4e 06 38 b7 ed 22 49 1a 44 07 0c 36 b3 26 5b e6 65 ae | #[.........U..N.8.."I.D..6.&[.e. |
| 18860 | 6b e0 c7 ec e7 e3 1f 18 f8 22 ff 00 c4 52 7c 64 fe df 96 0b d9 2e e1 f0 8a 5f c4 cf 75 34 57 16 | k........"...R|d........._..u4W. |
| 18880 | f0 88 bc 89 0e 63 66 72 c5 e6 2b bc c6 62 c1 65 2c 87 a3 f8 df 79 fb 30 0f 05 69 73 7c 4c b5 f1 | .....cfr..+..b.e,....y.0..is|L.. |
| 188a0 | 66 aa da 54 96 d7 d7 3e 19 b8 51 61 1c d1 19 a7 92 77 f3 62 63 1a 09 63 32 30 8f 70 79 5c 05 4f | f..T...>..Qa.....w.bc..c20.py\.O |
| 188c0 | 2f 62 86 f2 bf d9 c7 e0 04 bf b5 07 ed 0b a9 78 83 e0 36 97 79 e1 0f 06 f8 74 7f 6b ea 97 37 37 | /b.............x..6.y....t.k..77 |
| 188e0 | 44 5d c4 d1 b1 65 8a 09 b6 e1 38 f2 d8 b3 13 e5 86 18 69 33 fb cd ea ce 9a 8c 5c ac a4 da e9 a7 | D]...e....8.......i3......\..... |
| 18900 | 6d fa ab ed 6b 68 ef bb 26 6a d5 f9 ad cc ac f5 7a e8 ba b6 d2 7a ea d2 d6 cd b5 b9 ef 9a 1e 9f | m...kh..&j......z....z.......... |
| 18920 | f1 6f e2 a7 c7 7d 5b 50 d3 3c 6b a2 e9 d6 50 db 5a 09 f5 5d 23 4f 81 ae b5 19 e4 92 10 d6 31 1d | .o...}[P.<k...P.Z..]#O........1. |
| 18940 | ea 0e 0c cd bf 72 93 1a af 28 ad f7 7b f8 b5 2b cf 82 1e 19 f1 06 8d e2 ab 96 7b bb 28 62 8f c2 | .....r...(..{..+..........{.(b.. |
| 18960 | fe 16 d0 74 d3 2d c5 94 2a f1 20 95 88 20 4e ec d1 46 aa 1d d5 a1 05 49 0d bc a0 8b c1 5a 67 c3 | ...t.-..*.....N..F.....I.....Zg. |
| 18980 | df d9 ef 44 ba f1 36 b5 e2 1d 07 43 f0 be 99 74 20 b5 3a 66 b2 35 0b 98 6e e6 0c e4 5d 87 dc 3c | ...D..6....C...t..:f.5..n...]..< |
| 189a0 | e0 cc 64 38 6e 55 86 e7 ce 14 f9 0f c4 af da f7 e0 06 b9 e2 2b 9d 67 e2 2f 89 a5 d3 ff 00 b3 a3 | ..d8nU..............+.g./....... |
| 189c0 | b6 92 de d7 c1 77 a2 fb ed d2 c8 09 91 ee 5a 46 0b 1a bb 48 57 11 0c ee 90 6f 42 14 0a ce ca dc | .....w........ZF...HW....oB..... |
| 189e0 | db ec f5 eb a6 fd db bd b7 6f 46 db 57 b9 52 9d 08 2e 5a 32 e5 8a 5e ad 6f b6 8e d7 e8 92 d9 5b | .........oF.W.R...Z2..^.o......[ |
| 18a00 | 46 dc 8f 9c 7f 6b ff 00 8d fa 9f c7 db 9d 0f 40 4d 3e e3 c3 f6 3a 05 94 b6 fa 34 ba 93 a8 17 11 | F....k.........@M>...:....4..... |
| 18a20 | 85 db b8 c6 63 ff 00 58 e5 5d 72 5d c3 b9 4d c4 e0 b3 7c bb 7d 3d a8 9e ca e5 2e 56 79 6e 59 84 | ....c..X.]r]..M...|.}=.....VynY. |
| 18a40 | b3 de 6e 8a dc ba b2 f2 64 4c 1c 03 b5 b6 ae 36 fd d0 4e 09 3f 43 78 fe 4f 8a 7f b5 c7 c4 cd 73 | ..n.....dL.....6..N.?Cx.O......s |
| 18a60 | c1 1f b3 77 c3 7d 4a eb 4f 4d 51 ae a0 b4 d4 74 e8 a1 f2 a3 da 91 84 7c 1d 8b d3 24 03 b4 96 da | ...w.}J.OMQ....t.......|...$.... |
| 18a80 | 83 20 67 e6 bf 18 78 7f 5f f0 cf 8b a5 f0 97 88 0c 41 ed 18 22 5a 5b dc 01 12 3a b9 24 31 6c e0 | ..g...x._........A.."Z[...:.$1l. |
| 18aa0 | 64 f0 5b 90 18 1e 40 db 5c 11 85 18 b9 45 3e 97 b7 5e b7 f9 ff 00 97 cc c6 d5 d5 2e 79 41 a4 db | d.[...@.\....E>..^..........yA.. |
| 18ac0 | b3 e8 ef be bb de f7 5a 79 22 ba 5f 26 ad 35 8d 9e b9 36 e3 35 c8 b5 ba 86 c1 77 12 37 80 80 1e | .......Zy"._&.5...6.5.....w.7... |
| 18ae0 | 9b 86 e2 c1 41 0a 40 52 4e 79 1e 89 f0 f3 c1 3f 08 ef bc 15 7f ad f8 83 c6 3e 66 b5 3b 4b 0c 16 | ....A.@RNy.....?.........>f.;K.. |
| 18b00 | 17 e8 d1 79 29 18 49 84 b2 33 23 09 41 29 b1 63 8c ac 8e ee 37 15 56 21 b8 0d 37 4b 37 52 69 23 | ...y).I..3#.A).c....7.V!..7K7Ri# |
| 18b20 | 51 b5 8f 4e b4 d4 a5 02 49 a2 2b 24 b6 db 64 3b 91 53 78 24 e0 0d a8 e4 17 c0 d8 41 20 56 cf 86 | Q..N....I.+$..d;.Sx$.......A.V.. |
| 18b40 | 2f 7c 21 ab 4f 0c 7a fd a6 b3 75 3b 16 f3 82 28 da c1 24 5d 87 7c 8e 40 01 77 92 d8 38 dc 40 04 | /|!.O.z...u;...(..$].|.@.w..8.@. |
| 18b60 | 12 d5 a7 32 b5 ef 6b 3f 2e ff 00 3f d5 74 f2 15 19 4a 09 c7 6b ab 3b fa ea 95 ba 5e fd f4 7a 5d | ...2..k?...?.t...J..k.;....^..z] |
| 18b80 | 8b 1e af 6f a5 dc 5c 59 6b 3a 54 f2 3a 4c 7c a7 b2 d5 63 8d 4a 60 60 1d a8 c1 d8 74 dc 0f 38 1c | ...o..\Yk:T.:L|...c.J``....t..8. |
| 18ba0 | 02 0d 15 d7 78 f7 e3 1f 8c 7c 6b e2 49 35 4f 18 e9 ba 0a cd 14 31 41 6b 6c d0 23 2d b5 ba 46 a1 | ....x....|k.I5O......1Akl.#-..F. |
| 18bc0 | 22 44 8e 45 48 51 47 dd 8d 14 28 1c 81 cd 15 a4 23 1a 91 e6 95 39 36 fa a4 bf cc 99 61 ab 5f dd | "D.EHQG...(.....#....96.....a._. |
| 18be0 | a2 9a f3 7a fc f4 3f 6a a6 46 b7 b7 2b 7b 1d cd bc 86 39 6c e3 12 4c ee 8f 74 d8 27 25 54 36 c0 | ...z..?j.F..+{....9l..L..t.'%T6. |
| 18c00 | 33 97 5f 9d 4f dc 04 02 45 2f 1a 7c 2b b9 f8 b7 a7 c7 a2 c7 ad c3 a6 5d db 49 b3 47 d7 ed 64 08 | 3._.O...E/.|+..........].I.G..d. |
| 18c20 | d6 17 59 03 ed eb b0 fc 86 3c 16 52 ac 30 0e 5b 63 e0 89 6c a4 97 4d 96 07 b8 b9 d4 ac 8b 3b 34 | ..Y......<.R.0.[c..l..M.......;4 |
| 18c40 | f7 18 f3 55 67 0d f2 af dd 05 8a e7 e5 e3 f7 5c 97 c6 71 53 45 a1 68 1a c6 83 2e 95 a9 78 a6 cd | ...Ug..........\..qSE.h......x.. |
| 18c60 | 2d e4 b6 9a d1 f5 1d 32 63 6b 70 92 dd 02 8b e5 49 bc 05 6e f9 52 04 98 56 04 62 bf 5a c7 c2 15 | -......2ckp.....I..n.R..V.b.Z... |
| 18c80 | 30 95 63 35 a4 a2 ff 00 27 d7 a5 f4 5b bb 5e e7 c3 53 83 f6 f4 f9 1b 4d 49 5b 47 a7 c2 b6 d7 55 | 0.c5....'...[.^..S.....MI[G....U |
| 18ca0 | 6d 6d 1b b7 1b dc f9 1b e3 cf ed 81 fb 79 78 67 e1 df 8c 7c 29 f1 03 c5 3a 36 a2 7c 2d 13 68 77 | mm...........yxg...|)...:6.|-.hw |
| 18cc0 | 1a f4 4f 1c b3 8b 2d 45 41 8a 44 3f 72 64 9f cb 46 0e a7 7a b2 0c 60 a2 81 ad ff 00 04 9d f8 83 | ..O...-EA.D?rd..F..z..`......... |
| 18ce0 | fb 42 fc 1a f8 35 e3 bd 3b e3 8f 87 b5 78 2d bc 1b a4 7d a3 c3 b2 59 f8 7d 1c c6 93 c9 3c d2 4c | .B...5..;....x-...}...Y.}....<.L |
| 18d00 | b7 4a 3e 62 c6 07 04 3e f4 62 61 c2 e1 76 b7 5f fb 50 a7 82 be 0e f8 a3 4e f8 e5 e0 7f 85 ba cf | .J>b...>.ba..v._.P......N....... |
| 18d20 | 8a 7c 31 e2 cd 01 bc 20 de 06 4b 0f 39 5e e9 5e 32 ef 70 55 99 94 45 00 31 06 d8 5c aa 2a e7 07 | .|1.......K.9^.^2.pU..E.1..\.*.. |
| 18d40 | 7a c3 ae 7e d9 ff 00 00 be 12 7c 26 d6 fc 01 f1 27 c2 7e 27 f0 3f 84 9f 41 b3 b2 1e 1b be 89 6e | z..~......|&....'.~'.?..A......n |
| 18d60 | 26 95 2e 95 a4 64 8a 19 ca b3 c5 18 84 8d e4 f9 98 b8 62 18 31 52 bf 91 50 a3 8f 85 79 2a 8d 4a | &....d............b.1R..P...y*.J |
| 18d80 | 1b c7 4d 5a eb a6 aa c9 df 45 7d 2c ad 74 db fd 22 ad 0a 10 c1 ca 50 ba 9b 5e f3 da 2a 57 bb d3 | ..MZ.....E},.t..".....P..^..*W.. |
| 18da0 | 7d 53 d3 65 17 ad ed 6b fc 2f f1 cb f6 cc f8 d1 f1 eb c7 b7 de 2e b4 b0 91 34 98 2d e0 b6 86 da | }S.e...k./...............4.-.... |
| 18dc0 | 3d 19 97 ed 56 76 d8 29 0d db 44 43 23 37 96 b2 32 ab 85 42 ce 50 82 4e 64 f8 01 f1 fb e2 67 c3 | =...Vv.)..DC#7..2..B.P.Nd.....g. |
| 18de0 | 88 7c 63 ae 69 57 72 d8 c5 e2 6f 0f 32 dc fd be c5 a5 b6 54 55 71 6f 04 ec a3 e4 49 1c fc ac c0 | .|c.iWr...o.2......TUqo....I.... |
| 18e00 | 89 24 08 1f 62 92 e2 5f 86 5f b7 b7 c5 7f 83 ff 00 12 f5 cd 5f c1 16 de 19 b3 f0 d7 8b 35 3c 4b | .$..b.._._.........._........5<K |
| 18e20 | a5 e8 96 ad 6b 67 71 0a 96 2b 6e 13 82 8c c2 40 1b 39 94 10 5b 90 77 37 8e cf a9 de f8 4b c4 5a | ....kgq..+n....@.9..[.w7.....K.Z |
| 18e40 | 9c d7 b0 5d cf 71 0b cf 3c b0 dc 59 c7 34 0d 1b 87 0c 59 5b 2a c7 76 d1 e6 76 6d ac 9f 3a 8a e8 | ...].q..<..Y.4....Y[*.v..vm..:.. |
| 18e60 | 8c a9 27 19 de cf f0 e9 af 75 b7 45 74 d2 38 a3 ce ae 9d ec f7 db aa 77 b5 9d ba be af 73 ea 4f | ..'......u.Et.8........w.....s.O |
| 18e80 | 82 3f 0a 7e 32 7e d1 9e 24 4f 03 7e d3 5f b4 1d f7 81 74 9d 52 44 79 e1 f1 3d a8 55 9a 06 08 ab | .?.~2~..$O.~._....t.RDy..=.U.... |
| 18ea0 | 24 65 98 6f df b0 10 80 ed 57 18 5c e7 8c cf f8 29 0f ec 39 a7 7e c7 de 38 b9 f0 cf 81 b5 28 b5 | $e.o.....W.\....)..9.~..8.....(. |
| 18ec0 | 27 b6 92 d6 e6 c3 57 9d a1 85 b5 1b 2b 88 d8 99 23 8d 5b 68 0b 30 31 92 3e 50 11 38 1c e7 c4 bc | '.....W.....+...#.[h.01.>P.8.... |
| 18ee0 | 15 fb 4a fc 55 d7 fe 1e 5d 7c 23 d4 ef 2c 6d 7c 31 7b a8 a6 aa 6d e5 90 b0 59 23 58 e2 48 d9 b2 | ..J.U...]|#..,m|1{...m...Y#X.H.. |
| 18f00 | 0c 08 b8 40 30 41 50 49 6c e1 4d 6a f8 a3 c7 5f 11 7c 69 e1 39 7c 01 77 e2 1b 4b cd 3d 2e 12 ee | ...@0APIl.Mj..._.|i.9|.w..K.=... |
| 18f20 | c6 da f1 e3 2d 62 c1 52 31 e5 45 83 e4 96 d8 03 88 80 12 22 a3 91 b5 0e 3c fa f0 9b 71 94 65 69 | ....-b.R1.E........"....<...q.ei |
| 18f40 | 5d 37 6e ba 5a cf 4d 9d ff 00 2f 24 7a f8 59 51 74 f9 5d 25 ca e2 d7 4b bb de d2 bb d9 c7 45 b6 | ]7n.Z.M.../$z.YQt.]%...K......E. |
| 18f60 | b7 6f 7b 9f 48 fe c4 ff 00 b5 8f 8a 3c 19 e2 4f 15 7c 6a f8 97 a2 2a 37 86 be 1c 5c 68 9a c4 36 | .o{.H.......<..O.|j...*7...\h..6 |
| 18f80 | 5a 55 bd a5 83 dd 3c f0 9b 68 d5 63 08 8a ec 23 79 19 40 05 4a c8 ca 7e 7c 0f 82 fc 79 e2 9d 4b | ZU....<..h.c...#y.@.J..~|...y..K |
| 18fa0 | c4 7e 3c be f1 44 aa b6 bb ef e4 9f 75 bd c6 f6 31 b3 9e 73 c0 6c ee 20 b0 da 18 63 38 eb 5e a9 | .~<..D......u...1..s.l.....c8.^. |
| 18fc0 | f1 33 5d f8 a1 e2 7f 02 5a f8 0b 5f f8 99 f6 2d 12 da 09 e4 93 40 b5 85 55 12 e8 02 03 ce b0 ed | .3].....Z.._...-.....@..U....... |
| 18fe0 | f3 1c 9c 0f 34 82 57 21 70 54 57 8c 4f a5 5f f8 5e e6 65 d6 74 f3 65 f6 57 16 97 d2 b9 0f 27 cc | ....4.W!pTW.O._.^.e.t.e.W.....'. |
| 19000 | b8 27 6e f0 18 1c 94 38 38 c6 32 32 46 71 a5 46 18 76 df 57 7e fd db fc de 96 5d 57 74 65 98 e2 | .'n....88.22Fq.F.v.W~.....]Wte.. |
| 19020 | 29 e2 26 bd 92 f7 56 9a bb de da 5e dd f6 bd af aa 77 66 97 86 a1 9a 78 12 1d 3b 40 86 e1 a4 f3 | ).&...V....^.....wf....x..;@.... |
| 19040 | 5e 21 79 95 32 26 d6 f3 39 63 f7 f6 64 82 39 4d a0 82 73 56 f5 9b 0b b3 a5 4b a9 da 78 82 e4 26 | ^!y.2&..9c..d.9M..sV.....K..x..& |
| 19060 | a0 89 24 16 f2 db 80 63 75 09 bc 33 02 42 e1 9c 8c e4 92 0e 5f 61 38 ac 0d 23 5e fe c9 48 ee 19 | ..$....cu..3.B......_a8..#^..H.. |
| 19080 | 1e fd ac 59 91 24 96 36 19 89 b1 c8 cf 18 5c 87 1f dd 27 2c 0f 51 a2 35 ad 56 f2 2b bb c0 b0 e9 | ...Y.$.6......\...',.Q.5.V.+.... |
| 190a0 | 12 43 18 92 08 a0 0c e6 5b 79 01 0d e5 92 08 38 0d b4 e4 85 61 93 cb 1e 7a 1c b7 b7 f5 af ce db | .C......[y.....8....a...z....... |
| 190c0 | 7a f5 e8 79 91 92 8b bb d2 3a 7e 97 ea af 75 7d ba a5 71 da 4d 86 b6 f0 c9 3d a8 75 8a 49 98 c7 | z..y.....:~...u}..q.M....=.u.I.. |
| 190e0 | e7 df a2 39 1d 09 2b bc 63 24 1e 39 c7 a9 eb 45 4d a5 5c df 68 56 ec b6 7a e4 26 0b 89 9e 58 19 | ...9..+.c$.9...EM.\.hV..z.&...X. |
| 19100 | 62 81 f7 26 e2 a0 91 23 06 42 76 fd dc 0c 0c 71 cd 14 d4 f9 95 e3 3b 2f 9f f9 1a 4a d1 93 4a 9b | b..&...#.Bv....q......;/...J..J. |
| 19120 | 7e 6b 9a cf d2 d0 6a de 8c fd d2 d1 ca a4 30 cd e6 9b 08 a3 b8 6d 57 51 78 af cc d1 c5 04 48 5d | ~k....j.......0......mWQx.....H] |
| 19140 | 24 66 c1 66 51 b0 61 d7 26 57 f9 4f a5 79 bf c5 2f 8d 17 9f 0c 3e 1c 78 6f 5d f8 b9 e3 db cf 0f | $f.fQ.a.&W.O.y../....>.xo]...... |
| 19160 | 6a 7f 14 75 4b cb 4d 07 c3 77 d6 42 39 6c 0b 46 86 19 2e 4a 2c 6f 12 bb 88 55 d3 cc 59 15 6e cc | j..uK.M..w.B9l.F...J,o...U..Y.n. |
| 19180 | 88 c0 2f cb ed 1e 06 d2 7f b1 2c ae fe 27 df f8 7d e7 d2 ad 7c 41 1b 6a 13 46 d6 f3 6c b5 3b 23 | ../.......,..'..}...|A.j.F..l.;# |
| 191a0 | 20 46 e5 57 cc 75 de 0b 0f 94 a9 64 50 58 6d 3f 3c f8 93 c3 be 1e f8 fb ff 00 05 50 4f 83 7a df | .F.W.u.....dPXm?<..........PO.z. |
| 191c0 | 83 20 ba f0 67 81 e6 92 f7 41 7d 7e ed da eb 5a b9 8c 3d ed cc 56 51 07 db 24 bb e6 45 63 1a 92 | ....g....A}~...Z..=..VQ..$..Ec.. |
| 191e0 | 91 db a0 29 bc 0d 9f 67 c4 b8 ff 00 6f 8d 74 29 b5 cb 15 aa ba de ef 77 7b ab 6c 95 fe 4f a7 9f | ...)...g....o.t).......w{.l..O.. |
| 19200 | 92 60 a8 53 a3 1a 95 15 e4 dd d5 d6 d1 d1 b6 94 a2 93 72 ba b3 b5 f5 b2 bf 5d 2f 89 9f b4 67 c2 | .`.S..............r......]/...g. |
| 19220 | 0f 82 3f 12 74 1f d9 cf e3 47 8b a2 bf d1 b4 ef 87 b7 fa ae a2 da 26 a2 21 8d e6 99 25 b8 59 e2 | ..?.t....G............&.!...%.Y. |
| 19240 | 50 63 5c b1 f2 8d bc 8a cd 87 c0 2c 18 ab 9f 80 ff 00 e0 a7 fa 17 8f 7e 0f df 68 de 15 ba f8 be | Pc\........,...........~..h..... |
| 19260 | 7c 71 e1 8d 5a d2 eb fb 0e fa d6 fe 39 bc ab 76 95 a5 8e 19 15 c1 91 82 c7 2a b1 7f 95 77 12 8b | |q..Z.......9..v.........*...w.. |
| 19280 | 96 81 ab a4 ff 00 82 9f f8 73 46 97 e3 4f 8a 3e 34 78 d3 c3 fa c6 91 a1 68 d7 e3 48 d0 f4 fb 85 | .........sF..O.>4x......h..H.... |
| 192a0 | 79 24 ba b8 86 08 df ec fb dd f6 ac 70 b3 47 0f ee c6 55 10 2b 65 9c bd 7c b7 e2 1b 5f 17 fc 71 | y$..........p.G...U.+e..|..._..q |
| 192c0 | 96 e7 c7 bf 11 bc 7f f6 4b 79 ad 02 43 ab 6a 10 85 8f 2a 18 46 81 23 76 31 c6 44 64 12 aa 52 36 | ........Ky..C.j...*.F.#v1.Dd..R6 |
| 192e0 | 3b 70 01 04 fc b4 5b 72 bc b5 5d 1a d7 6f 3b ed 63 d0 c4 d3 95 7b c9 da ef 54 b6 b2 6f 9a ed 37 | ;p....[r..]..o;.c....{...T..o..7 |
| 19300 | a4 b5 4a fa 3d 1f a1 ec 7f b1 47 80 7c 07 e2 4f 06 9f 88 fe 36 d2 34 bf 19 5e 59 eb 16 f6 3a 67 | ..J.=.....G.|..O....6.4..^Y...:g |
| 19320 | 83 2e f5 03 6b 7c a9 d6 4b 91 28 90 2c 50 87 64 88 4a e9 2a 6e 68 d4 6d 03 21 7f 69 4f 8d 5f b3 | ....k|..K.(.,P.d.J.*nh.m.!.iO._. |
| 19340 | c7 c5 9d 5a fd 34 0f 82 89 e0 2b db 07 5d 3e c0 f8 63 52 fb 54 02 65 91 b7 2d ca bb 31 93 f7 78 | ...Z.4....+..]>..cR.T.e..-..1..x |
| 19360 | 4d f1 10 19 c3 4a 06 1c 20 f3 df 05 7c 74 d1 fe 1c 7c 2e b6 f0 af 87 5b 4a d6 75 5d 3b c4 77 b7 | M....J......|t...|.....[J.u];.w. |
| 19380 | 13 b6 a5 00 10 6a 16 93 41 02 14 92 55 9b 7b 28 92 da 32 8a bb 4a 17 df 9f 9c ed f3 ff 00 0a f8 | .....j..A...U.{(..2..J.......... |
| 193a0 | aa c0 eb 76 f7 fe 26 41 05 be a1 61 35 8c eb 6d 26 ed 8c d1 32 24 a5 48 6e 03 6d 72 b8 dc 48 3b | ...v..&A...a5..m&...2$.Hn.mr..H; |
| 193c0 | 42 9c 10 49 55 70 71 4e cb 75 6f d7 fe 1b 4e a6 7f 58 8b e5 4f 75 64 ee b4 d5 7c db b5 bb ef 7b | B..IUpqN.uo...N..X..Oud...|....{ |
| 193e0 | 25 b9 a3 e0 cf 12 f8 87 c3 9a 94 83 42 bd b7 d3 65 fb 46 57 2c 84 34 5b c9 d9 b9 c9 56 4e 31 ce | %...........B...e.FW,.4[....VN1. |
| 19400 | 43 64 03 db 1d cf 80 fe 26 78 b5 bc 47 ad 78 c7 c3 7e 2b 32 ea 17 77 6f 2d ed ec ae d1 5d 5c c0 | Cd......&x..G.x..~+2..wo-....]\. |
| 19420 | c9 27 98 b8 0d c2 11 9f 30 13 92 52 3d ad cd 78 ed b5 ea 9b af ed a8 e7 f3 08 98 db b8 bb de 0c | .'......0..R=..x................ |
| 19440 | 2b 82 06 4a 9e 47 2c 31 9c 61 71 b7 9a d5 b3 f1 45 80 d2 2e 62 d4 35 29 e6 10 ea 59 86 28 ed c2 | +..J.G,1.aq.....E...b.5)...Y.(.. |
| 19460 | e5 4a e0 16 20 13 92 33 85 ca f9 7b 58 f3 91 8c 27 19 ca cd ff 00 5a af 57 fe 64 45 a8 47 95 f6 | .J.....3...{X...'.....Z.W.dE.G.. |
| 19480 | ff 00 3f f3 7f 3b 1e 81 f1 0b e2 dd db ea 17 cf e1 af 88 13 43 3e a3 73 1d dc 76 f1 5e 99 da 39 | ..?..;..............C>.s..v.^..9 |
| 194a0 | a3 5c 07 f3 48 dd 92 fc c6 4f ce 83 01 88 27 71 e2 a3 82 f7 c4 3a 88 fb 55 da 4c 6f a0 92 ed ef | .\..H....O....'q.....:..U.Lo.... |
| 194c0 | 2f 7e ec 67 0c 0e 41 e8 cd 82 02 8c 96 21 48 ac 43 75 28 bc 96 1b 1d 22 1b 73 15 ca dc a4 f3 b0 | /~.g..A......!H.Cu(....".s...... |
| 194e0 | 66 58 d4 72 77 2a 8d dd 54 02 30 ac 47 39 e8 2f 5f c1 73 76 d3 b0 bd b7 bd 9e 69 8c ef 12 44 63 | fX.rw*..T.0.G9./_.sv......i...Dc |
| 19500 | f9 b0 5d b2 4a 0f 42 c7 80 06 00 04 56 6e 1c 9a bd 1f 9e bf 93 db f2 f9 84 ea ca 50 5c fa af 4f | ..].J.B.....Vn.............P\..O |
| 19520 | f3 fe b5 ee 8d 5f 10 68 f1 5e e8 d6 57 77 fa e5 b9 be 5b 69 62 9d 51 9b 60 6d ac 52 33 b7 82 48 | ....._.h.^..Ww....[ib.Q.`m.R3..H |
| 19540 | e7 71 19 cb 80 dd 18 ae 79 d3 3c 4b a1 da 59 ea 4b e1 f3 66 d6 b3 35 ad cc 97 08 5e 3f 35 cf 04 | .q......y.<K..Y.K..f..5....^?5.. |
| 19560 | 29 5c 17 c0 c1 5c 1d a0 7a d6 a5 8f 8e 35 5b 76 5d 3f 54 f1 0d a3 5b cd 6f f6 89 6d ad c3 06 12 | )\...\..z....5[v]?T...[.o..m.... |
| 19580 | 87 da a3 cd f2 c8 0e 48 0c 1c 16 55 57 27 39 2e 0c b7 32 d9 ea 7a 51 96 2d 2e ea f6 e3 cb 57 f3 | .......H...UW'9...2..zQ.-.....W. |
| 195a0 | 2e 27 28 26 c1 21 94 46 00 21 46 00 01 48 25 95 8e 48 c0 16 95 a3 ca d7 de be f5 fd 5f 41 c6 7c | .'(&.!.F.!F..H%..H.........._A.| |
| 195c0 | d2 6d 2e df a7 97 5e bb 6a d9 73 45 d4 74 61 a4 41 a7 6b 97 16 41 ec c3 c7 0c d1 db 33 ac d1 b3 | .m....^.j.sE.ta.A.k..A......3... |
| 195e0 | b4 8a e0 95 27 1f 3e 39 c1 e3 90 0d 15 97 73 71 26 b8 91 dd 68 16 76 b6 76 ea 9b 45 a2 ca ca 61 | ....'.>9......sq&...h.v.v..E...a |
| 19600 | 39 27 69 20 7c dd 72 18 92 70 46 4e 7a 15 d5 4a bc a3 04 b9 7f 15 fe 42 95 2a 35 1f 34 e6 93 d3 | 9'i.|.r..pFNz..J.......B.*5.4... |
| 19620 | ec ae c7 ef df 8b 7e 23 cb 69 63 e1 1f d9 5f c4 1e 04 bd 89 7c 43 e2 bb 69 2f ec ef 34 94 b5 b0 | ......~#.ic..._.....|C..i/..4... |
| 19640 | 9e d9 ae 77 b2 ab cc ab b6 57 31 92 a9 0e e7 21 89 f9 64 75 6a e0 be 34 f8 c7 f6 70 5f 17 59 fe | ...w.....W1....!..duj..4...p_.Y. |
| 19660 | d9 7e 3d f1 7d 9f c3 7f 8c 3f 09 56 58 f4 7d 2e e3 51 37 31 5f e8 90 de 4d 1c 71 aa 97 db 2b dc | .~=.}....?.VX.}..Q71_...M.q...+. |
| 19680 | 5b 3c d0 f6 71 2b 9f bb b7 9f a5 bf 6b 4d 47 c6 5a 1f 81 74 cf 1e 7c 2c f8 2d 6f e2 6f 13 5e ea | [<..q+......kMG.Z..t..|,.-o.o.^. |
| 196a0 | 16 76 49 a6 49 3c 30 bd ba ca ad 10 bb 89 f7 3f d9 fe 57 c1 28 56 46 0a a3 2a 13 35 f0 e7 fc 15 | .vI.I<0........?..W.(VF..*.5.... |
| 196c0 | 57 e0 35 f7 80 3f 64 9f 14 78 b3 50 f1 1d c7 fc 24 7a ec ba 4c 9e 36 f0 de 99 6f 0c ab 64 90 be | W.5..?d..x.P....$z..L.6...o..d.. |
| 196e0 | c9 03 5c b1 39 cc 8c 59 24 1b 76 a2 20 31 1d 8c cb 95 7c 63 c4 62 67 29 fd ab bb 27 6b 37 6e f7 | ..\.9..Y$.v..1....|c.bg)...'k7n. |
| 19700 | fe b5 57 b6 9d 90 8c a9 e0 94 22 ed 66 f7 d5 b7 a2 b5 bd d8 ad 36 76 76 f9 a3 c3 7f e0 b2 df b5 | ..W.......".f........6vv........ |
| 19720 | d7 c3 7f db 0f 40 f8 6f e1 af 03 6a 7a 1e 95 e1 fb bf 12 dd 4b ac 5d e9 da 9c 57 d7 76 17 65 d2 | .....@.o...jz.......K.]...W.v.e. |
| 19740 | 3b 8f 3e 38 e4 2a b1 e1 3c f8 9c 36 c9 95 94 83 1e c7 cf c3 df 1f fc 6d e1 eb cf 0e e8 3f 0c 3e | ;.>8.*..<..6...........m.....?.> |
| 19760 | 0e dc 09 b4 9f 0a e9 2d 67 aa 6b 36 c8 ca 35 f9 85 dd c4 df 6b 08 e1 5d 55 63 95 55 50 e4 a0 8f | .......-g.k6..5.....k..]Uc.UP... |
| 19780 | 71 0b 9c d7 d7 3e 07 fd 8e 3e 15 6b ff 00 f0 49 bd 7f e3 97 87 a7 81 f5 4b 0d 76 6b 69 7c 57 6d | q....>...>.k...I........K.vki|Wm |
| 197a0 | 03 03 20 4b a6 89 e1 93 1f 38 49 e3 16 3e 52 48 09 59 24 66 ca 87 6c 7e 7f 5a 78 a1 f4 dd 12 4b | ...K.....8I..>RH.Y$f..l~.Zx....K |
| 197c0 | 2f ec a6 7b 86 95 04 99 9c 94 48 37 e4 ae d3 fd e7 2c 0b 1c 8c 38 00 0c 1c a4 9c a9 a7 1d d3 f9 | /..{......H7.....,...8.......... |
| 197e0 | 5b 6d 55 fa ee b7 6b 4e ba 1c 55 e9 fb 1a 8e 12 7a b5 7b eb d9 34 b5 be 89 69 a5 bc f6 b2 c8 b7 | [mU...kN..U.....z.{..4...i...... |
| 19800 | 96 f6 fd 1e da 4b 87 2b b1 a5 8a 30 71 86 e8 dc af 4c 8c 82 33 f3 60 77 c6 34 fc 3b a2 ea da a2 | .....K.+...0q....L..3.`w.4.;.... |
| 19820 | c9 75 a5 79 b0 47 69 6d e7 24 cc be 67 ef 14 a8 2c a1 47 05 4b 0c 91 f7 43 e3 39 23 34 ad af 26 | .u.y.Gim.$..g...,.G.K...C.9#4..& |
| 19840 | bc 92 43 2e a8 91 c5 04 21 65 b7 b8 73 89 62 f9 70 a3 3d 70 40 20 1c 0c a7 1c e2 ae e8 77 9a 86 | ..C.....!e..s.b.p.=p@........w.. |
| 19860 | 98 ba 83 58 69 d2 4b 15 bc 78 17 78 6d 85 58 80 37 02 39 5e 1f 00 85 c9 3c e4 56 ee 4f 5d 3b 7f | ...Xi.K..x.xm.X.7.9^....<.V.O];. |
| 19880 | 5f 91 94 54 92 e6 bf 7f eb ab ff 00 86 7d 42 ca ee ff 00 5c 75 83 ce 6b f0 ce b1 ac 71 a8 41 1c | _..T.........}B....\u..k....q.A. |
| 198a0 | cc a5 79 1b 4a ef 38 e0 f2 5b 6e 4e 0e 6a d2 ea 36 ce 96 f6 b2 5f 2c 71 bc be 5c e2 2b 7c 86 6c | ..y.J.8..[nN.j..6...._,q..\.+|.l |
| 198c0 | 9c c8 c7 19 ce 70 c0 f2 dc 60 8c 63 39 f7 72 de d9 6a 4b 61 67 01 64 52 65 86 35 04 c8 09 00 15 | .....p...`.c9.r..jKag.dRe.5..... |
| 198e0 | 66 c0 2c 7a 03 c0 39 1c 11 9e 66 b6 56 d4 4a db c1 e5 5a 79 ac 24 dd 22 63 e6 1c 6e 04 2e 42 f2 | f.,z..9...f.V.J...Zy.$."c..n..B. |
| 19900 | 49 c6 01 f7 23 9c 65 05 25 7d 2d bf a7 7f ea c5 ba d3 8e b7 ff 00 2e ab b9 62 d2 ed ad e4 45 7d | I...#.e.%}-..............b....E} |
| 19920 | 16 59 de ce e0 ac ee ff 00 36 e4 e8 a8 d9 53 c8 e7 27 bf 03 1d 6b 73 49 f1 30 d5 2c 6f 2d 6f 61 | .Y.......6....S..'...ksI.0.,o-oa |
| 19940 | 82 f6 ec 5c bb 24 2b 09 59 12 26 cb 1d a4 0c a8 0c c1 82 f2 14 a3 1c 10 39 e6 f5 16 8e f0 c4 b1 | ...\.$+.Y.&.............9....... |
| 19960 | d9 49 24 b7 37 05 5a 1b 6b 60 48 38 fb 8a bc 73 ce dd b9 3d 8e 7a 53 66 d5 75 29 22 96 fd 5d 1f | .I$.7.Z.k`H8...s...=.zSf.u)"..]. |
| 19980 | ed 44 db cc 65 84 79 9d 43 6f 52 46 43 13 9f 7c 12 0e 45 38 d3 8b b4 96 8f fa fe ba 19 2a 8a 0e | .D..e.y.CoRFC..|..E8.........*.. |
| 199a0 | 4b 5b 7a 9b ce 5e ce fa e5 b4 dd 3a 1d 39 4c 66 78 96 f1 49 da 99 90 30 5d aa 30 84 03 f2 e0 07 | K[z..^.....:.9Lfx..I...0].0..... |
| 199c0 | eb b7 b0 a9 6d 35 94 b7 cc ba 8d e5 d5 d4 92 c6 d7 09 f6 30 02 29 50 df 31 2b c8 42 46 49 c0 20 | ....m5.............0.)P.1+.BFI.. |
| 199e0 | 64 7b 54 30 e9 ba 96 af 6a f2 e9 7a 75 cb c3 0c 92 45 f6 bb ff 00 2d 63 96 11 9f 94 96 ca a9 19 | d{T0....j..zu....E....-c........ |
| 19a00 | 24 f2 5b 24 63 04 0a bb 69 a6 98 25 8e 5d 53 c4 56 b6 b1 42 c0 aa 58 a0 92 4f 25 b3 8d a1 70 0f | $.[$c...i..%.]S.V..B..X..O%...p. |
| 19a20 | a0 c9 07 71 21 c8 eb 58 b5 cb 16 a2 ae ff 00 1b 7e 7f f0 4d 1a 93 6e 73 5a bd fb ef f8 19 ba e5 | ...q!..X........~..M..nsZ....... |
| 19a40 | f6 b5 2c f1 4d fd 99 2c 05 e1 0c c8 f3 79 44 b1 27 24 af 6c 9c 91 ed 8a 2a fd d7 8c ee 3c 2b 31 | ..,.M..,.....yD.'$.l....*....<+1 |
| 19a60 | d3 6d 6c 64 68 9b f7 91 9b c8 40 93 0d ce 0f a8 f4 3d c7 23 00 80 0a eb 84 12 82 b5 ff 00 0f f3 | .mldh.....@......=.#............ |
| 19a80 | 29 d6 85 f5 76 f2 b3 ff 00 33 fa 5a f8 29 a8 78 8f e2 2f c3 4d 17 c4 1e 35 b9 b4 7f 1a f8 7a 3b | )...v....3.Z.).x../.M...5.....z; |
| 19aa0 | 8b df 0e 69 da 69 91 63 6b 20 e2 38 16 68 f7 a6 e7 5d ce 8b 9c 18 d5 99 49 dc 59 9b c2 3f 6a 3f | ...i.i.ck..8.h...]......I.Y..?j? |
| 19ac0 | da bc e8 3e 11 f8 c5 f0 f7 e2 84 df f0 8f 68 cd f0 bf 51 5d 5a c7 59 b7 59 e4 3a dd ca cd 15 b4 | ...>..........h...Q]Z.Y.Y.:..... |
| 19ae0 | 06 58 f3 1a b4 b1 f9 6c ab f2 e7 03 e5 1b 86 de 77 45 f8 bd f1 83 c2 c2 5d 4f 40 f1 95 a7 f6 7b | .X.....l........wE......]O@....{ |
| 19b00 | 69 83 50 9b c3 b7 fa 4c d7 7b dd 64 47 81 47 94 e2 42 e7 0a 99 01 9a 42 57 cd 8b 0a 48 f8 17 f6 | i.P....L.{.dG.G..B.....BW...H... |
| 19b20 | b0 f8 8b fb 6a 78 a3 42 f1 2a 7e d1 be 15 d6 b4 ad 03 c7 1a c3 6b 93 8b 4d 04 bc 7e 75 ad aa 5b | ....jx.B.*~..........k..M..~u..[ |
| 19b40 | ac 82 39 9d 76 22 fd a2 05 7c 60 0f dd 95 e7 6d 6b 99 e0 96 59 8d 9d 3a e9 a7 76 e2 fa 35 d1 df | ..9.v"...|`....mk...Y..:..v..5.. |
| 19b60 | 5f 7a e9 5f 4d 7c 8e bc 2d 6f af d3 53 a6 95 9a 6a 49 74 7a 2d 55 db 69 7c 5b ee ae f5 da 1f f8 | _z._M|..-o..S...jItz-U.i|[...... |
| 19b80 | 25 8e a4 de 2a fd 97 3f 69 8f 87 9a f7 89 3e c9 a4 ff 00 c2 04 da ec 11 dd 5f 48 12 6b 8b 71 26 | %...*..?i.....>.........._H.k.q& |
| 19ba0 | d8 fc bc 98 c9 66 68 c9 dc ac 7e 5d a3 69 6d e3 e1 3b 9b 0b 5d 43 51 27 4a 95 27 92 e4 46 a0 93 | .....fh...~].im..;..]CQ'J.'..F.. |
| 19bc0 | b1 63 62 aa 59 73 9c 0d b9 23 24 9c 0e a4 57 b2 fc 16 b8 f1 bf c0 cf 10 6b 7e 1b 6d 16 eb 55 7d | .cb.Ys...#$...W.........k~.m..U} |
| 19be0 | 7b 49 93 48 be d1 62 52 23 ba 8a e5 51 ed a4 2c 14 ac aa c4 47 3c 4a b9 df b4 36 36 8d c7 cc 75 | {I.H..bR#...Q..,....G<J...66...u |
| 19c00 | 4f 03 eb b2 4f a8 de db 5b 49 22 5b de a5 bc d9 88 96 89 dc 37 ee 59 b6 8f 98 15 2a 54 e0 92 18 | O...O...[I"[........7.Y....*T... |
| 19c20 | 8c e2 b9 29 d7 a3 ed 1a 8c bf cb 7f cb af cc e6 ab 87 ad ec a3 1e 47 a2 f3 de ed b7 db 55 f9 25 | ...)..................G......U.% |
| 19c40 | b9 97 66 e5 12 da 58 2e a5 b5 2e e6 19 8f 97 bb 8c 0c 1e 33 9e 4e 79 ee b5 6e f1 e4 9e 28 6d 64 | ..f...X............3.Ny..n...(md |
| 19c60 | 26 51 0a 18 cd c4 64 ed 61 90 15 d8 91 8e 32 54 7d 06 00 c6 4c b3 f8 3b 54 80 34 77 7e 1b ba b2 | &Q....d.a.....2T}...L..;T.4w~... |
| 19c80 | 9a 77 f2 62 7b a5 75 cb 26 df 31 31 b3 21 be eb 67 8e 01 14 f4 db 75 24 fa 7d ec 31 46 f2 94 8e | .w.b{.u.&.11.!..g.....u$.}.1F... |
| 19ca0 | dc 43 03 20 8e 65 00 05 c6 d0 33 8e 36 e0 8f 98 77 ab 73 8b 8b 94 75 5f 27 f9 76 bf 7e 86 2e 9c | .C...e....3.6...w.s...u_'.v.~... |
| 19cc0 | ad 69 2f cf 4d 7b 7f 5d 0a 10 db 7f 67 5d c7 fd a9 b8 b5 b4 a8 67 b7 1f 2b c9 17 19 50 fb 58 a9 | .i/.M{.]....g].......g..+...P.X. |
| 19ce0 | c6 00 27 20 67 20 73 52 c9 6e 6d 35 01 3e 99 a5 4d 13 5a cb f6 a4 79 b2 47 94 71 b4 e0 ae 18 72 | ..'.g.sR.nm5.>..M.Z...y.G.q....r |
| 19d00 | 79 e4 36 e5 e9 ce 66 7b 68 2d 9f 79 45 8e 07 8f 75 c7 98 ca c4 46 00 c6 ce 33 9d dd 42 f3 c9 c9 | y.6...f{h-.yE...u....F...3..B... |
| 19d20 | da 33 56 34 2d 3a ca f2 f2 24 9e f2 47 b7 b0 97 1a a4 e1 04 88 b1 16 00 15 08 7e 60 7d 14 9c 86 | .3V4-:...$..G.............~`}... |
| 19d40 | 18 63 ce 12 9a 71 e6 ff 00 86 fe af f9 99 4a 12 8c ac b5 fe bf e1 99 4e 3b 5b ab f6 16 d1 cd 03 | .c...q........J........N;[...... |
| 19d60 | c4 24 37 0c f0 fc 8c 72 06 54 93 80 0f 38 e4 70 41 c1 20 fc da f6 7e 1d bc d4 a1 b8 1a 45 a1 f2 | .$7....r.T...8.pA.....~......E.. |
| 19d80 | c0 05 e5 bf 60 86 09 01 18 e5 8a aa e4 e0 64 fc b8 63 dc 62 ba dd 77 e2 14 be 23 d0 f4 4b 18 3c | ....`.........d..c.b..w...#..K.< |
| 19da0 | 31 a5 68 ba 77 87 71 3b c5 a4 a2 43 73 73 1b 84 5d cf 2f 2d 33 29 dd b0 b1 77 8f 73 64 71 59 36 | 1.h.w.q;...Css..]./-3)...w.sdqY6 |
| 19dc0 | 91 eb 5b 92 ef 4e d3 55 a2 67 92 58 63 b9 d8 f0 6c 6e 0b f0 30 36 b0 50 7e f2 93 ce 06 30 72 a9 | ..[..N.U.g.Xc...ln..06.P~....0r. |
| 19de0 | 59 ec 95 ff 00 af eb ef 37 f6 6f 56 b5 5d ed e5 fd 7d dd 36 29 49 79 77 0e 85 6f 3d ec 97 52 5b | Y.......7.oV.]...}.6)Iyw..o=..R[ |
| 19e00 | 49 01 b5 2d 15 bb 08 fc ec 99 0c 5f 29 c3 e3 3d 49 e0 91 9e 30 4e 8c f7 9a 40 f0 ef 97 a5 68 76 | I..-......._)..=I...0N...@....hv |
| 19e20 | 56 f7 f6 7e 6c 33 6a 16 77 a3 74 8a 57 08 cc a4 e0 f3 b8 97 5c 07 0c 54 01 d6 b2 27 bb d3 52 ca | V..~l3j.w.t.W.......\..T...'..R. |
| 19e40 | 5b 69 b5 2b b8 e1 6d d7 36 91 40 e4 ac 52 70 18 70 df 29 c0 07 2d 92 4a 80 78 39 12 43 26 a5 7d | [i.+..m.6.@..Rp.p.)..-.J.x9.C&.} |
| 19e60 | 68 a2 0d 31 36 5d 03 6e 2e 25 91 54 b4 b9 56 21 b0 e3 03 23 23 7e 57 a9 00 91 81 10 8a 49 5b 4f | h..16].n.%.T..V!...##~W......I[O |
| 19e80 | 5f eb fa dc a8 f2 d9 b6 9d 9f e9 67 e9 d7 f0 b1 af a1 49 a3 2d 80 b3 f1 4a eb b2 4f 6e c6 34 10 | _..........g......I.-...J..On.4. |
| 19ea0 | f8 75 2f 56 35 eb b7 7b c8 85 70 c5 be 4c 60 67 39 39 cd 15 85 a9 b6 a5 ad 4c b7 76 9a fa db a0 | .u/V5..{..p..L`g99.......L.v.... |
| 19ec0 | 8c 28 b7 f3 19 7c ac 7f 08 0a 4e 07 d7 93 d4 f5 a2 a1 c2 4d eb 52 4b d2 f6 ff 00 d2 4e 59 e1 69 | .(...|....N........M.RK.....NY.i |
| 19ee0 | 4a 6d f3 fe 2b ff 00 91 67 ee 56 95 a1 de ea c4 20 d4 5e f2 4b cd 5d f2 ba 85 9a c7 70 b1 24 4b | Jm..+...g.V.......^.K.].....p.$K |
| 19f00 | fc 63 2a 24 e0 65 c6 17 03 19 0d cb 7c ef ff 00 05 5b f8 89 e2 9f 87 ba 27 c1 79 7c 26 f6 b6 1a | .c*$.e......|....[......'.y|&... |
| 19f20 | 85 a5 b6 bf 35 e2 5c 3e eb 1b 9b 47 92 dc 7d 99 a2 39 dd 04 82 32 a6 02 30 c1 b8 24 1e 3e ac bb | ....5.\>...G..}..9...2..0..$.>.. |
| 19f40 | b6 86 f6 6b db 54 d5 c3 b5 cd d2 c5 67 f6 8b 67 89 ff 00 72 03 63 91 80 df dd 8c e6 37 0c 5f 1d | ...k.T......g..g...r.c......7._. |
| 19f60 | 6b 03 c7 ff 00 08 fe 07 7c 6b f8 7d ac 69 7f 18 f4 11 35 b5 cc 93 9d 3f 51 57 fb 44 56 b0 c5 cf | k.......|k.}.i....5....?QW.DV... |
| 19f80 | cc ea 8e e9 03 3a 29 66 50 cd ca aa ed 0d 91 fa af 19 60 6a 63 f2 49 28 af 85 a9 5a db ab 35 6b | .....:)fP.........`jc.I(...Z..5k |
| 19fa0 | 69 e6 db b6 9c b7 b9 e0 70 ce 32 18 6c e2 1e de 76 8c b4 ba f3 77 5f 7b 56 5a dd a9 3b a7 6b 1f | i.......p.2.l...v....w_{VZ..;.k. |
| 19fc0 | 0a 7f c1 38 61 f0 f7 c4 cf 15 f8 ff 00 5d d6 bc 35 2a 68 b6 7e 0f 8b c4 16 32 4c 82 53 6f 77 6b | ...8a........]..5*h.~....2L.Sowk |
| 19fe0 | 79 14 f1 0f 31 01 2d 22 a7 da 40 76 1b a4 24 02 a0 bb a1 c8 d7 f4 ff 00 09 f8 0a cb f6 80 d0 3c | y...1.-"..@v..$................< |
| 1a000 | 33 39 5d 26 3d 43 45 d5 bc 31 6b aa c1 1a b4 92 79 f1 e2 2d a4 b6 66 86 3b b1 b8 65 8c 62 37 07 | 39]&=CE..1k.....y..-..f.;..e.b7. |
| 1a020 | 20 90 64 fd a2 fc 55 fb 29 f8 3e ef 54 f8 59 fb 30 d8 6b ba ec ba 86 80 b2 cd a8 59 6a cd 0c 56 | ..d...U.).>.T.Y.0.k........Yj..V |
| 1a040 | da 98 8e 46 c9 db 0a 79 c6 38 8f 0c 36 a9 eb f2 96 3b 3e 21 d7 2e b5 fb 6d 6b cf d4 ee 19 0b da | ...F...y.8..6....;>!....mk...... |
| 1a060 | f9 6a f7 37 0d 28 97 7c 7d 06 72 41 0a c0 0c e4 a9 00 9c 57 e2 b1 ca 67 5b 13 29 bf 71 34 93 5e | .j.7.(.|}.rA.......W...g[.).q4.^ |
| 1a080 | 71 96 9b ed 74 ad a2 bd bb 35 a7 eb 11 cf 30 98 1c 34 69 46 f3 e5 bb 52 56 dd c6 ce f7 8b 6f 56 | q...t....5....0..4iF...RV.....oV |
| 1a0a0 | 9a d5 ef 26 9d de 9f 7e ff 00 c1 4d f4 af 04 78 93 5c f8 9b f1 23 c3 d7 51 db ea 9a 16 b5 e1 9d | ...&...~...M...x.\...#..Q....... |
| 1a0c0 | 72 c2 dc 4f 13 c5 7d 1d dd 8a ad c4 88 88 36 16 de d6 eb 95 38 60 87 72 93 96 1f 26 fe d3 7e 2f | r..O..}.......6.....8`.r...&..~/ |
| 1a0e0 | f0 77 c4 cf 1f c9 f1 73 40 b7 b1 b3 ff 00 84 9a ca d7 53 bf b4 d3 cb 13 69 a8 98 c4 77 5f 29 07 | .w.....s@.........S.....i...w_). |
| 1a100 | 66 e9 d6 49 42 76 59 a2 db c0 af 28 bd d7 bc 4b f6 38 2d 75 4f 10 dd 48 2d ee a4 13 23 cc 58 24 | f..IBvY....(...K.8-uO..H-...#.X$ |
| 1a120 | 9b 82 f4 c9 ec 3d f7 64 f7 cd 59 86 f6 e7 4b 82 48 22 b1 b7 17 16 92 99 3e d1 72 a0 3c 59 1c 9c | .....=.d..Y...K.H"......>.r.<Y.. |
| 1a140 | 03 92 dc 73 bb 76 c2 06 30 73 5d f8 5c 0b c2 45 25 2b a5 a2 f4 b2 5d ec dd d5 ef d1 3d 11 f3 f9 | ...s.v..0s].\..E%+....].....=... |
| 1a160 | 86 66 b1 35 24 e0 ad 7b 6e d5 d5 b4 dd 2d 34 b5 fa dd 6b 70 b6 9e 59 ee 2e 61 57 59 a6 b8 b3 42 | .f.5$..{n....-4...kp..Y..aWY...B |
| 1a180 | 65 bc 6d be 5b 02 b9 74 66 c6 03 60 1c b6 de 32 b8 39 18 48 13 52 d5 25 92 e0 3b f9 53 c0 d1 03 | e.m.[..tf..`...2.9.H.R.%..;.S... |
| 1a1a0 | 6d 18 11 ee 50 b9 4c 02 31 c0 51 93 8d bb 81 ef cc fa a4 4f 76 f7 c3 64 12 dc db 4a 93 c0 ec b9 | m...P.L.1.Q........Ov..d...J.... |
| 1a1c0 | 56 46 65 f9 57 e6 c3 01 c0 03 2d 94 0f 93 90 29 f7 57 f0 da e9 b7 b6 86 e2 1b 75 ba 54 91 16 d1 | VFe.W.....-....).W........u.T... |
| 1a1e0 | f7 ab fc d9 0a c3 71 39 5c 11 9f 98 92 ab 9c 03 93 df cf ca ef 15 af fc 37 f5 e7 aa f3 3c b7 0b | ......q9\...............7....<.. |
| 1a200 | b6 b6 f5 df 5b 96 6d 75 0b 6f b0 5a df c5 a4 98 a5 12 88 63 bc 9a f8 39 03 8e 19 46 0f 03 0c a7 | ....[.mu.o.Z.......c...9...F.... |
| 1a220 | e5 04 e4 76 38 ab 0e b5 6e 63 b0 90 5c cd 29 b7 92 78 a5 82 57 6f 24 a9 c2 95 ce e0 40 c2 f3 81 | ...v8...nc..\.)..x..Wo$.....@... |
| 1a240 | c0 da 01 3c d3 ce a3 15 ec a6 5b 89 24 b8 96 e9 23 ff 00 48 b8 b8 20 6e 54 50 cc e5 db 19 f7 3f | ...<......[.$...#..H...nTP.....? |
| 1a260 | 29 01 b8 e3 14 81 a2 ba b8 b7 b5 69 23 44 bf 84 a7 d9 6d df 2a fb 58 05 52 e5 89 1c 80 bf 31 ca | )..........i#D....m.*.X.R.....1. |
| 1a280 | 8c 30 e0 d4 3b 5f 95 ab 3f 5e 9a ff 00 c1 b6 c2 6e f2 bc b4 dd 7a fd f6 ea fa fe 84 b6 da f4 76 | .0..;_..?^......n....z.........v |
| 1a2a0 | b3 43 70 d7 09 68 d6 d7 be 74 8d 6b 96 7f 28 94 0b b4 86 c0 23 a8 18 04 92 43 12 70 69 2e 57 49 | .Cp..h...t.k..(.....#....C.pi.WI |
| 1a2c0 | 89 e4 4d 3e d6 5b f8 e0 61 70 44 f2 10 ae 09 4e 30 08 25 72 48 f9 70 7b fa 9a 75 8d 85 d2 5b da | ..M>.[..apD....N0.%rH.p{..u...[. |
| 1a2e0 | 5c 5b d8 2d b4 b6 d3 3a dc 5d 49 70 9b 8c 5b 40 0a c8 4e 06 57 77 0c 30 db 8f 07 1c 4c b7 b3 4a | \[.-...:.]Ip..[@..N.Ww.0....L..J |
| 1a300 | 96 b6 f7 57 8d 2c f6 ee 90 49 1a 85 45 f2 49 c0 cb 1c 61 72 00 c9 c6 d0 a3 a8 24 09 72 a7 d1 6b | ...W.,...I..E.I...ar......$.r..k |
| 1a320 | e5 bf e0 2a 4a 52 6a 1c da 3d 3c 96 da fe 46 6e ab 3a 68 9a 84 91 db dd 59 c2 93 9f 38 24 9f bd | ...*JRj..=<...Fn.:h.....Y...8$.. |
| 1a340 | 3c 8f ef 23 e1 ba 60 9e 79 07 3c e4 02 b7 0c fa 0e 81 3c ba 7e a9 e1 62 64 f3 37 82 97 e9 f7 58 | <..#..`.y.<.......<.~..bd.7....X |
| 1a360 | 06 19 c8 3c e0 f6 24 63 1c f5 a2 a5 aa d2 d5 53 6f ee ff 00 26 76 d2 fa c3 a6 ad 56 cb b7 3a 5f | ...<..$c.......So...&v.....V..:_ |
| 1a380 | 87 43 f7 57 52 f1 36 a7 24 77 c9 1e a2 0c 50 3c 36 8d 1d e5 9e e3 e7 2b 00 c4 15 e5 f1 19 22 40 | .C.WR.6.$w....P<6......+......"@ |
| 1a3a0 | 32 c5 b2 00 3b 4d 36 58 ee ec ef ef 3f e1 1e b2 9e 36 f3 cd bc 77 b6 77 bb 61 40 08 e7 0a 7e 42 | 2...;M6X....?....6...w.w.a@...~B |
| 1a3c0 | 40 38 65 e5 10 7c c3 2d 8a c5 d6 a6 ba b2 d0 ef 7c 47 6b 7d 29 16 f3 5e 5c 18 67 08 fb de de 49 | @8e..|.-........|Gk})..^\.g....I |
| 1a3e0 | 02 82 76 8f 94 08 80 4e 37 21 c1 2c f8 15 57 47 f1 26 9b 35 ec da 44 9a 18 13 5b 47 a6 4a 2e e3 | ..v....N7!.,..WG.&.5..D...[G.J.. |
| 1a400 | 90 29 79 35 02 77 3b 28 5c 64 12 0b 63 1b f0 01 c0 e2 bf 7f 54 e9 d4 a1 25 1d b5 4d 74 7b 2f 2e | .)y5.w;(\d..c.......T...%..Mt{/. |
| 1a420 | b6 ef be da 5c fc c6 bd 2a f4 ab 73 db d3 ba 57 71 ba bd f6 69 e9 75 7b 76 67 c1 5f b4 d7 84 a6 | ....\...*..s...Wq...i.u{vg._.... |
| 1a440 | fd 96 be 17 e9 ff 00 0c 2c 74 ed 41 2f af 2f f5 1b bf 11 eb 62 c6 6b 58 2e 03 a0 b5 4b 78 64 74 | ........,t.A/./.....b.kX....Kxdt |
| 1a460 | 5d e0 a3 3c 92 26 58 79 7e 5e 18 33 ca 83 e3 ff 00 12 58 68 f3 e8 fa 46 ab a1 e9 37 52 cf f6 39 | ]..<.&Xy~^.3......Xh...F...7R..9 |
| 1a480 | be d8 75 0b 6d 8a c5 65 76 53 1f 0b b9 0a b8 c3 1e 59 95 86 30 00 1f bc 3e 3a f0 6e 9d a8 59 c5 | ..u.m..evS.......Y..0...>:.n..Y. |
| 1a4a0 | a5 78 9a d6 cf 59 b3 82 ea 5b 24 b7 d5 ec 96 71 80 ef 97 3b bf 88 e0 e0 e3 29 bb e5 c7 43 ce 78 | .x...Y...[$....q...;.....)...C.x |
| 1a4c0 | 83 f6 70 f8 45 e2 1f 04 4b a2 6a be 03 d1 e7 d1 ed 19 e1 83 4a 9b 4c 8c a4 7e 6d be 65 91 1b 1b | ..p.E...K.j.........J.L..~m.e... |
| 1a4e0 | 92 42 3e 50 ea 46 d1 c8 1b 86 ea f8 6c 57 0a 53 a8 f9 e9 d7 b2 e9 74 df 5d 15 fe 69 e8 97 5f 9f | .B>P.F......lW.S......t.]..i.._. |
| 1a500 | bf 1e 27 73 ab 28 62 62 f9 ed ad b6 49 68 ad 77 d1 f9 f6 ed a7 e1 47 86 fc 31 e2 3d 56 e0 a6 99 | ..'s.(bb....Ih.w......G..1.=V... |
| 1a520 | a7 5c cd 34 96 8d 24 d1 e9 70 19 48 28 08 5c 85 e4 73 8e 7a 00 dc 13 d2 bb 6f 85 ff 00 b2 cf c7 | .\.4..$..p.H(.\..s.z.....o...... |
| 1a540 | df 88 7a ca e9 3a 0f c2 1d 7a fe e2 f2 de 44 58 ae ad 9e 21 31 4c 12 fb 99 94 30 52 53 19 c0 52 | ..z..:...z....DX...!1L....0RS..R |
| 1a560 | 57 23 e6 af d9 cf 85 9f 08 be 16 fc 3a 48 bc 21 e0 4f 87 fa 56 8e 12 ee 4d 31 ae 74 fb 6d 8e f1 | W#..........:H.!.O..V...M1.t.m.. |
| 1a580 | a2 ab 1c 92 4b 10 5a 50 c3 2c 58 14 1f 36 0e 07 1f fb 6e df 78 af c3 7f 0d b4 ef 18 69 fe 37 d5 | ....K.ZP.,X..6....n.x.......i.7. |
| 1a5a0 | 2d e1 b0 b7 b8 ba 78 ec 26 58 6e 9c c9 67 2d b2 6d b9 0a 59 18 17 2e cc 06 1f a0 08 7e 6a e2 c7 | -.....x.&Xn..g-.m..Y........~j.. |
| 1a5c0 | f0 d4 72 ec 14 f1 15 a7 7b 2b b4 95 b4 f2 7a bd bd 1e 9b 1d 74 73 8a 33 c4 38 46 37 8a 6b 56 ed | ..r.....{+....z.....ts.3.8F7.kV. |
| 1a5e0 | d6 cb 4b 3d de 9d 6d 7b 9f 01 fc 32 ff 00 82 4e fe d5 be 31 94 58 78 93 c3 56 1a 0c d6 3a 7c 93 | ..K=..m{...2...N...1.Xx..V...:|. |
| 1a600 | 0b 7d 4b 51 52 67 89 26 55 95 dc 46 c4 e5 19 99 19 00 04 b4 32 a6 3c c8 dc 0f 33 f8 b5 fb 26 7c | .}KQRg.&U..F........2.<...3...&| |
| 1a620 | 59 f8 75 36 9f 71 77 a3 d9 cb 0d e5 ad 8b da 6a 3a 44 a6 48 5f ed 23 f7 50 bb b6 04 53 a8 04 32 | Y.u6.qw........j:D.H_.#.P...S..2 |
| 1a640 | 70 c3 03 23 18 27 e8 98 7f 6b 5f 88 fa 27 c5 9d 39 7e 15 f9 5e 1c b4 f8 79 a3 dc de e9 5a 72 ff | p..#.'...k_..'..9~..^...y....Zr. |
| 1a660 | 00 a4 42 6e 64 b5 8d a7 70 24 f9 94 3c c5 a5 00 96 28 5b 82 48 cd 75 5f 0b 34 dd 3f e3 d5 f7 c5 | ..Bnd...p$..<....([.H.u_.4.?.... |
| 1a680 | a7 f8 88 93 35 a5 cd 9d fe a1 16 93 a7 5c 34 16 91 ea 06 ca ea 58 e7 31 72 19 57 ec 91 fe ef 8d | ....5........\4......X.1r.W..... |
| 1a6a0 | c5 55 8b 7c 80 57 c8 46 1c b5 64 9a 5a 5e fe 49 6f dd 3e bb 2b 9f 41 89 95 38 73 34 b4 57 5e 77 | .U.|.W.F..d.Z^.Io.>.+.A..8s4.W^w |
| 1a6c0 | 56 5f 3b fa 25 e6 b5 3e 0b f1 2e 9b ab 68 73 de 78 7a e6 66 7b ad 3a ed 60 8e d5 ad bc a6 8c 82 | V_;.%..>.....hs.xz.f{.:.`....... |
| 1a6e0 | 55 97 69 e5 72 72 4a ff 00 b4 49 e7 91 44 69 d7 5a 7f 9d 62 93 3c 4c f0 ab 5b dc 44 43 85 66 51 | U.i.rrJ...I..Di.Z..b.<L..[.DC.fQ |
| 1a700 | b8 46 41 ea 7e 6c 91 c8 38 07 82 4d 75 7e 2a f1 66 a5 e3 3b 37 d7 ae 2d ad 6c e3 68 a2 43 63 65 | .FA.~l..8..Mu~*.f..;7..-.l.h.Cce |
| 1a720 | 0e c8 83 43 1b 22 b8 e7 25 88 4e 49 24 92 c7 04 71 8c 0b a7 b7 d3 2e 2d ee f4 a8 0c 37 22 e0 40 | ...C."..%.NI$...q......-....7".@ |
| 1a740 | b3 f9 84 96 42 80 31 6f 56 21 b1 91 80 31 d3 27 35 93 84 94 b9 2f 76 ba f9 af d3 6f c4 e7 b7 25 | ....B.1oV!...1.'5..../v....o...% |
| 1a760 | b9 1e 92 db 4b 75 b7 9e de 6f a7 5d 02 d6 d9 f5 0d 46 cd 74 df 0e c8 c2 e2 d0 06 7f 34 88 91 e3 | ....Ku...o.].....F.t........4... |
| 1a780 | 8d 0b c8 72 7f 84 96 62 39 ee 07 4e 35 2d 1e db 50 58 af 75 bd 66 29 52 69 4c 6f 65 6b 6c 14 a3 | ...r...b9..N5-..PX.u.f)RiLoekl.. |
| 1a7a0 | a8 55 0a 48 46 0a 4e 4a 2f 2d b0 8c 90 38 cd dd 3f c2 fa 15 ab 6a 51 5d d9 9b 8f ec f9 1e 18 77 | .U.HF.NJ/-...8..?....jQ].......w |
| 1a7c0 | 39 5d f2 70 0b 36 39 da 39 2a aa 54 82 dc b3 0e 0c c2 6b 01 69 7d 75 a3 69 cb 6b 6f 26 9b 1c b6 | 9].p.69.9*.T......k.i}u.i.ko&... |
| 1a7e0 | d1 b3 6f 92 07 72 a1 c8 70 07 de 19 53 80 01 1d bb d6 74 e3 3c 4d 2e 78 47 e6 dd 9e 9b db 7e 96 | ..o..r..p...S.....t.<M.xG.....~. |
| 1a800 | 3a a8 d4 a7 4e 6e 32 7a 27 af e3 d3 ae d2 d7 fe 18 ce d2 3c 33 e1 cd 62 dd af f5 6d 1f 51 b8 b8 | :...Nn2z'..........<3..b...m.Q.. |
| 1a820 | 92 56 32 4c ba 8a 44 58 fa 95 28 4e 7d 4e 79 eb 81 d2 8a ea f4 5f 01 f8 7f c6 16 bf da 8f 61 0d | .V2L..DX..(N}Ny......_........a. |
| 1a840 | b0 55 8e 35 8a 24 c8 e2 35 dc 72 4e 4e 5b 71 f6 04 28 e0 0a 2a e5 86 8b 93 6d ca fe 52 68 51 ad | .U.5.$..5.rNN[q..(..*....m..RhQ. |
| 1a860 | 5a 11 b7 ff 00 23 fa c4 ff d9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | Z....#.......................... |
| 1a880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a9a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a9c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a9e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aa00 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 70 72 6f 78 79 2e 63 00 00 00 00 00 00 00 00 | proxylab-handout/proxy.c........ |
| 1aa20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aa40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aa60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000644.0006626.0000144.0000 |
| 1aa80 | 30 30 30 30 36 31 34 00 31 32 36 32 33 34 36 34 34 36 36 00 30 31 33 37 32 36 00 20 30 00 00 00 | 0000614.12623464466.013726..0... |
| 1aaa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ab00 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 1ab20 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 1ab40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ab60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ab80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1abc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1abe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ac00 | 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 0a 0a 2f 2a 20 52 65 63 6f 6d 6d 65 6e 64 | #include.<stdio.h>../*.Recommend |
| 1ac20 | 65 64 20 6d 61 78 20 63 61 63 68 65 20 61 6e 64 20 6f 62 6a 65 63 74 20 73 69 7a 65 73 20 2a 2f | ed.max.cache.and.object.sizes.*/ |
| 1ac40 | 0a 23 64 65 66 69 6e 65 20 4d 41 58 5f 43 41 43 48 45 5f 53 49 5a 45 20 31 30 34 39 30 30 30 0a | .#define.MAX_CACHE_SIZE.1049000. |
| 1ac60 | 23 64 65 66 69 6e 65 20 4d 41 58 5f 4f 42 4a 45 43 54 5f 53 49 5a 45 20 31 30 32 34 30 30 0a 0a | #define.MAX_OBJECT_SIZE.102400.. |
| 1ac80 | 2f 2a 20 59 6f 75 20 77 6f 6e 27 74 20 6c 6f 73 65 20 73 74 79 6c 65 20 70 6f 69 6e 74 73 20 66 | /*.You.won't.lose.style.points.f |
| 1aca0 | 6f 72 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 69 73 20 6c 6f 6e 67 20 6c 69 6e 65 20 69 6e 20 79 | or.including.this.long.line.in.y |
| 1acc0 | 6f 75 72 20 63 6f 64 65 20 2a 2f 0a 73 74 61 74 69 63 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 75 | our.code.*/.static.const.char.*u |
| 1ace0 | 73 65 72 5f 61 67 65 6e 74 5f 68 64 72 20 3d 20 22 55 73 65 72 2d 41 67 65 6e 74 3a 20 4d 6f 7a | ser_agent_hdr.=."User-Agent:.Moz |
| 1ad00 | 69 6c 6c 61 2f 35 2e 30 20 28 58 31 31 3b 20 4c 69 6e 75 78 20 78 38 36 5f 36 34 3b 20 72 76 3a | illa/5.0.(X11;.Linux.x86_64;.rv: |
| 1ad20 | 31 30 2e 30 2e 33 29 20 47 65 63 6b 6f 2f 32 30 31 32 30 33 30 35 20 46 69 72 65 66 6f 78 2f 31 | 10.0.3).Gecko/20120305.Firefox/1 |
| 1ad40 | 30 2e 30 2e 33 5c 72 5c 6e 22 3b 0a 0a 69 6e 74 20 6d 61 69 6e 28 29 0a 7b 0a 20 20 20 20 70 72 | 0.0.3\r\n";..int.main().{.....pr |
| 1ad60 | 69 6e 74 66 28 22 25 73 22 2c 20 75 73 65 72 5f 61 67 65 6e 74 5f 68 64 72 29 3b 0a 20 20 20 20 | intf("%s",.user_agent_hdr);..... |
| 1ad80 | 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | return.0;.}..................... |
| 1ada0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1adc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ade0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ae00 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 70 6f 72 74 2d 66 6f 72 2d 75 73 65 72 2e 70 | proxylab-handout/port-for-user.p |
| 1ae20 | 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | l............................... |
| 1ae40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ae60 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000755.0006626.0000144.0000 |
| 1ae80 | 30 30 30 31 37 37 34 00 31 32 32 35 31 34 30 37 37 30 36 00 30 31 35 34 36 34 00 20 30 00 00 00 | 0001774.12251407706.015464..0... |
| 1aea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1af00 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 1af20 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 1af40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1af60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1af80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1afa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1afc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1afe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b000 | 23 21 20 2f 75 73 72 2f 62 69 6e 2f 70 65 72 6c 20 2d 77 0a 75 73 65 20 73 74 72 69 63 74 3b 0a | #!./usr/bin/perl.-w.use.strict;. |
| 1b020 | 75 73 65 20 44 69 67 65 73 74 3a 3a 4d 44 35 3b 0a 23 0a 23 20 70 6f 72 74 2d 66 6f 72 2d 75 73 | use.Digest::MD5;.#.#.port-for-us |
| 1b040 | 65 72 2e 70 6c 20 2d 20 52 65 74 75 72 6e 20 61 20 70 6f 72 74 20 6e 75 6d 62 65 72 2c 20 70 2c | er.pl.-.Return.a.port.number,.p, |
| 1b060 | 20 66 6f 72 20 61 20 67 69 76 65 6e 20 75 73 65 72 2c 20 77 69 74 68 20 61 0a 23 20 20 20 20 20 | .for.a.given.user,.with.a.#..... |
| 1b080 | 6c 6f 77 20 70 72 6f 62 61 62 69 6c 69 74 79 20 6f 66 20 63 6f 6c 6c 69 73 69 6f 6e 73 2e 20 54 | low.probability.of.collisions..T |
| 1b0a0 | 68 65 20 70 6f 72 74 20 70 20 69 73 20 61 6c 77 61 79 73 20 65 76 65 6e 2c 20 73 6f 20 74 68 61 | he.port.p.is.always.even,.so.tha |
| 1b0c0 | 74 0a 23 20 20 20 20 20 75 73 65 72 73 20 63 61 6e 20 75 73 65 20 70 20 61 6e 64 20 70 2b 31 20 | t.#.....users.can.use.p.and.p+1. |
| 1b0e0 | 66 6f 72 20 74 65 73 74 69 6e 67 20 77 69 74 68 20 70 72 6f 78 79 20 61 6e 64 20 74 68 65 20 54 | for.testing.with.proxy.and.the.T |
| 1b100 | 69 6e 79 20 77 65 62 0a 23 20 20 20 20 20 73 65 72 76 65 72 2e 0a 23 20 20 20 20 20 0a 23 20 20 | iny.web.#.....server..#......#.. |
| 1b120 | 20 20 20 75 73 61 67 65 3a 20 2e 2f 70 6f 72 74 2d 66 6f 72 2d 75 73 65 72 2e 70 6c 20 5b 6f 70 | ...usage:../port-for-user.pl.[op |
| 1b140 | 74 69 6f 6e 61 6c 20 75 73 65 72 20 6e 61 6d 65 5d 0a 23 0a 6d 79 20 24 6d 61 78 70 6f 72 74 20 | tional.user.name].#.my.$maxport. |
| 1b160 | 3d 20 36 35 35 33 36 3b 0a 6d 79 20 24 6d 69 6e 70 6f 72 74 20 3d 20 31 30 32 34 3b 0a 0a 0a 23 | =.65536;.my.$minport.=.1024;...# |
| 1b180 | 20 68 61 73 68 6e 61 6d 65 20 2d 20 63 6f 6d 70 75 74 65 20 61 6e 20 65 76 65 6e 20 70 6f 72 74 | .hashname.-.compute.an.even.port |
| 1b1a0 | 20 6e 75 6d 62 65 72 20 66 72 6f 6d 20 61 20 68 61 73 68 20 6f 66 20 74 68 65 20 61 72 67 75 6d | .number.from.a.hash.of.the.argum |
| 1b1c0 | 65 6e 74 0a 73 75 62 20 68 61 73 68 6e 61 6d 65 20 7b 0a 20 20 20 20 6d 79 20 24 6e 61 6d 65 20 | ent.sub.hashname.{.....my.$name. |
| 1b1e0 | 3d 20 73 68 69 66 74 3b 0a 20 20 20 20 6d 79 20 24 70 6f 72 74 3b 0a 20 20 20 20 6d 79 20 24 68 | =.shift;.....my.$port;.....my.$h |
| 1b200 | 61 73 68 20 3d 20 44 69 67 65 73 74 3a 3a 4d 44 35 3a 3a 6d 64 35 5f 68 65 78 28 24 6e 61 6d 65 | ash.=.Digest::MD5::md5_hex($name |
| 1b220 | 29 3b 0a 20 20 20 20 23 20 74 61 6b 65 20 6f 6e 6c 79 20 74 68 65 20 6c 61 73 74 20 33 32 20 62 | );.....#.take.only.the.last.32.b |
| 1b240 | 69 74 73 20 3d 3e 20 6c 61 73 74 20 38 20 68 65 78 20 64 69 67 69 74 73 0a 20 20 20 20 24 68 61 | its.=>.last.8.hex.digits.....$ha |
| 1b260 | 73 68 20 3d 20 73 75 62 73 74 72 28 24 68 61 73 68 2c 20 2d 38 29 3b 0a 20 20 20 20 24 68 61 73 | sh.=.substr($hash,.-8);.....$has |
| 1b280 | 68 20 3d 20 68 65 78 28 24 68 61 73 68 29 3b 0a 20 20 20 20 24 70 6f 72 74 20 3d 20 24 68 61 73 | h.=.hex($hash);.....$port.=.$has |
| 1b2a0 | 68 20 25 20 28 24 6d 61 78 70 6f 72 74 20 2d 20 24 6d 69 6e 70 6f 72 74 29 20 2b 20 24 6d 69 6e | h.%.($maxport.-.$minport).+.$min |
| 1b2c0 | 70 6f 72 74 3b 0a 20 20 20 20 24 70 6f 72 74 20 3d 20 24 70 6f 72 74 20 26 20 30 78 66 66 66 66 | port;.....$port.=.$port.&.0xffff |
| 1b2e0 | 66 66 66 65 3b 0a 20 20 20 20 70 72 69 6e 74 20 22 24 6e 61 6d 65 3a 20 24 70 6f 72 74 5c 6e 22 | fffe;.....print."$name:.$port\n" |
| 1b300 | 3b 0a 7d 0a 0a 0a 23 20 49 66 20 63 61 6c 6c 65 64 20 77 69 74 68 20 6e 6f 20 63 6f 6d 6d 61 6e | ;.}...#.If.called.with.no.comman |
| 1b320 | 64 20 6c 69 6e 65 20 61 72 67 2c 20 74 68 65 6e 20 68 61 73 68 20 74 68 65 20 75 73 65 72 69 64 | d.line.arg,.then.hash.the.userid |
| 1b340 | 2c 20 6f 74 68 65 72 77 69 73 65 0a 23 20 68 61 73 68 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c | ,.otherwise.#.hash.the.command.l |
| 1b360 | 69 6e 65 20 61 72 67 75 6d 65 6e 74 28 73 29 2e 0a 69 66 28 24 23 41 52 47 56 20 3d 3d 20 2d 31 | ine.argument(s)..if($#ARGV.==.-1 |
| 1b380 | 29 20 7b 0a 20 20 20 20 6d 79 20 28 24 75 73 65 72 6e 61 6d 65 29 20 3d 20 67 65 74 70 77 75 69 | ).{.....my.($username).=.getpwui |
| 1b3a0 | 64 28 24 3c 29 3b 0a 20 20 20 20 68 61 73 68 6e 61 6d 65 28 24 75 73 65 72 6e 61 6d 65 29 3b 0a | d($<);.....hashname($username);. |
| 1b3c0 | 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 66 6f 72 65 61 63 68 28 40 41 52 47 56 29 20 7b 0a 20 20 | }.else.{.....foreach(@ARGV).{... |
| 1b3e0 | 20 20 20 20 20 20 68 61 73 68 6e 61 6d 65 28 24 5f 29 3b 0a 20 20 20 20 7d 0a 7d 0a 00 00 00 00 | ......hashname($_);.....}.}..... |
| 1b400 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 66 72 65 65 2d 70 6f 72 74 2e 73 68 00 00 00 | proxylab-handout/free-port.sh... |
| 1b420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b460 | 00 00 00 00 30 30 30 30 37 30 30 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000700.0006626.0000144.0000 |
| 1b480 | 30 30 30 31 30 30 33 00 31 32 32 34 31 30 32 33 32 37 34 00 30 31 34 36 30 32 00 20 30 00 00 00 | 0001003.12241023274.014602..0... |
| 1b4a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b4c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b4e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b500 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 1b520 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 1b540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b5a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b600 | 23 21 2f 62 69 6e 2f 62 61 73 68 0a 0a 23 0a 23 20 66 72 65 65 2d 70 6f 72 74 2e 73 68 20 2d 20 | #!/bin/bash..#.#.free-port.sh.-. |
| 1b620 | 72 65 74 75 72 6e 73 20 61 6e 20 75 6e 75 73 65 64 20 54 43 50 20 70 6f 72 74 2e 20 0a 23 0a 50 | returns.an.unused.TCP.port...#.P |
| 1b640 | 4f 52 54 5f 53 54 41 52 54 3d 34 35 30 30 0a 50 4f 52 54 5f 4d 41 58 3d 36 35 30 30 30 0a 70 6f | ORT_START=4500.PORT_MAX=65000.po |
| 1b660 | 72 74 3d 24 7b 50 4f 52 54 5f 53 54 41 52 54 7d 0a 0a 77 68 69 6c 65 20 5b 20 54 52 55 45 20 5d | rt=${PORT_START}..while.[.TRUE.] |
| 1b680 | 20 0a 64 6f 0a 20 20 70 6f 72 74 73 69 6e 75 73 65 3d 60 6e 65 74 73 74 61 74 20 2d 2d 6e 75 6d | ..do...portsinuse=`netstat.--num |
| 1b6a0 | 65 72 69 63 2d 70 6f 72 74 73 20 2d 2d 6e 75 6d 65 72 69 63 2d 68 6f 73 74 73 20 2d 61 20 2d 2d | eric-ports.--numeric-hosts.-a.-- |
| 1b6c0 | 70 72 6f 74 6f 63 6f 6c 3d 74 63 70 69 70 20 7c 20 67 72 65 70 20 74 63 70 20 7c 20 5c 0a 20 20 | protocol=tcpip.|.grep.tcp.|.\... |
| 1b6e0 | 20 20 63 75 74 20 2d 63 32 31 2d 20 7c 20 63 75 74 20 2d 64 27 3a 27 20 2d 66 32 20 7c 20 63 75 | ..cut.-c21-.|.cut.-d':'.-f2.|.cu |
| 1b700 | 74 20 2d 64 27 20 27 20 2d 66 31 20 7c 20 67 72 65 70 20 2d 45 20 22 5b 30 2d 39 5d 2b 22 20 7c | t.-d'.'.-f1.|.grep.-E."[0-9]+".| |
| 1b720 | 20 75 6e 69 71 20 7c 20 74 72 20 22 5c 6e 22 20 22 20 22 60 0a 0a 20 20 65 63 68 6f 20 22 24 7b | .uniq.|.tr."\n"."."`....echo."${ |
| 1b740 | 70 6f 72 74 73 69 6e 75 73 65 7d 22 20 7c 20 67 72 65 70 20 2d 77 71 20 22 24 7b 70 6f 72 74 7d | portsinuse}".|.grep.-wq."${port} |
| 1b760 | 22 0a 20 20 69 66 20 5b 20 22 24 3f 22 20 3d 3d 20 22 30 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 | "...if.[."$?".==."0".];.then.... |
| 1b780 | 20 69 66 20 5b 20 24 70 6f 72 74 20 2d 65 71 20 24 7b 50 4f 52 54 5f 4d 41 58 7d 20 5d 0a 20 20 | .if.[.$port.-eq.${PORT_MAX}.]... |
| 1b7a0 | 20 20 74 68 65 6e 0a 20 20 20 20 20 20 65 78 69 74 20 2d 31 0a 20 20 20 20 66 69 0a 20 20 20 20 | ..then.......exit.-1.....fi..... |
| 1b7c0 | 70 6f 72 74 3d 60 65 78 70 72 20 24 7b 70 6f 72 74 7d 20 2b 20 31 60 0a 20 20 65 6c 73 65 0a 20 | port=`expr.${port}.+.1`...else.. |
| 1b7e0 | 20 20 20 65 63 68 6f 20 24 70 6f 72 74 0a 20 20 20 20 65 78 69 74 20 30 0a 20 20 66 69 0a 64 6f | ...echo.$port.....exit.0...fi.do |
| 1b800 | 6e 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ne.............................. |
| 1b820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b9a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b9c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b9e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ba00 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 64 72 69 76 65 72 2e 73 68 00 00 00 00 00 00 | proxylab-handout/driver.sh...... |
| 1ba20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ba40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ba60 | 00 00 00 00 30 30 30 30 37 30 30 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000700.0006626.0000144.0000 |
| 1ba80 | 30 30 32 34 36 34 32 00 31 32 36 35 36 32 32 31 36 35 33 00 30 31 34 32 32 33 00 20 30 00 00 00 | 0024642.12656221653.014223..0... |
| 1baa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bb00 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 1bb20 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 1bb40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bb60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bb80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bbc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bbe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bc00 | 23 21 2f 62 69 6e 2f 62 61 73 68 0a 23 0a 23 20 64 72 69 76 65 72 2e 73 68 20 2d 20 54 68 69 73 | #!/bin/bash.#.#.driver.sh.-.This |
| 1bc20 | 20 69 73 20 61 20 73 69 6d 70 6c 65 20 61 75 74 6f 67 72 61 64 65 72 20 66 6f 72 20 74 68 65 20 | .is.a.simple.autograder.for.the. |
| 1bc40 | 50 72 6f 78 79 20 4c 61 62 2e 20 49 74 20 64 6f 65 73 0a 23 20 20 20 20 20 62 61 73 69 63 20 73 | Proxy.Lab..It.does.#.....basic.s |
| 1bc60 | 61 6e 69 74 79 20 63 68 65 63 6b 73 20 74 68 61 74 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65 74 | anity.checks.that.determine.whet |
| 1bc80 | 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 63 6f 64 65 0a 23 20 20 20 20 20 62 65 68 61 76 65 | her.or.not.the.code.#.....behave |
| 1bca0 | 73 20 6c 69 6b 65 20 61 20 63 6f 6e 63 75 72 72 65 6e 74 20 63 61 63 68 69 6e 67 20 70 72 6f 78 | s.like.a.concurrent.caching.prox |
| 1bcc0 | 79 2e 20 0a 23 0a 23 20 20 20 20 20 44 61 76 69 64 20 4f 27 48 61 6c 6c 61 72 6f 6e 2c 20 43 61 | y...#.#.....David.O'Hallaron,.Ca |
| 1bce0 | 72 6e 65 67 69 65 20 4d 65 6c 6c 6f 6e 20 55 6e 69 76 65 72 73 69 74 79 0a 23 20 20 20 20 20 75 | rnegie.Mellon.University.#.....u |
| 1bd00 | 70 64 61 74 65 64 3a 20 32 2f 38 2f 32 30 31 36 0a 23 20 0a 23 20 20 20 20 20 75 73 61 67 65 3a | pdated:.2/8/2016.#..#.....usage: |
| 1bd20 | 20 2e 2f 64 72 69 76 65 72 2e 73 68 0a 23 20 0a 0a 23 20 50 6f 69 6e 74 20 76 61 6c 75 65 73 0a | ../driver.sh.#...#.Point.values. |
| 1bd40 | 4d 41 58 5f 42 41 53 49 43 3d 34 30 0a 4d 41 58 5f 43 4f 4e 43 55 52 52 45 4e 43 59 3d 31 35 0a | MAX_BASIC=40.MAX_CONCURRENCY=15. |
| 1bd60 | 4d 41 58 5f 43 41 43 48 45 3d 31 35 0a 0a 23 20 56 61 72 69 6f 75 73 20 63 6f 6e 73 74 61 6e 74 | MAX_CACHE=15..#.Various.constant |
| 1bd80 | 73 0a 48 4f 4d 45 5f 44 49 52 3d 60 70 77 64 60 0a 50 52 4f 58 59 5f 44 49 52 3d 22 2e 2f 2e 70 | s.HOME_DIR=`pwd`.PROXY_DIR="./.p |
| 1bda0 | 72 6f 78 79 22 0a 4e 4f 50 52 4f 58 59 5f 44 49 52 3d 22 2e 2f 2e 6e 6f 70 72 6f 78 79 22 0a 54 | roxy".NOPROXY_DIR="./.noproxy".T |
| 1bdc0 | 49 4d 45 4f 55 54 3d 35 0a 4d 41 58 5f 52 41 4e 44 3d 36 33 30 30 30 0a 50 4f 52 54 5f 53 54 41 | IMEOUT=5.MAX_RAND=63000.PORT_STA |
| 1bde0 | 52 54 3d 31 30 32 34 0a 50 4f 52 54 5f 4d 41 58 3d 36 35 30 30 30 0a 4d 41 58 5f 50 4f 52 54 5f | RT=1024.PORT_MAX=65000.MAX_PORT_ |
| 1be00 | 54 52 49 45 53 3d 31 30 0a 0a 23 20 4c 69 73 74 20 6f 66 20 74 65 78 74 20 61 6e 64 20 62 69 6e | TRIES=10..#.List.of.text.and.bin |
| 1be20 | 61 72 79 20 66 69 6c 65 73 20 66 6f 72 20 74 68 65 20 62 61 73 69 63 20 74 65 73 74 0a 42 41 53 | ary.files.for.the.basic.test.BAS |
| 1be40 | 49 43 5f 4c 49 53 54 3d 22 68 6f 6d 65 2e 68 74 6d 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 | IC_LIST="home.html.............c |
| 1be60 | 73 61 70 70 2e 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 69 6e 79 2e 63 0a 20 20 20 20 20 20 | sapp.c.............tiny.c....... |
| 1be80 | 20 20 20 20 20 20 67 6f 64 7a 69 6c 6c 61 2e 6a 70 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 | ......godzilla.jpg.............t |
| 1bea0 | 69 6e 79 22 0a 0a 23 20 4c 69 73 74 20 6f 66 20 74 65 78 74 20 66 69 6c 65 73 20 66 6f 72 20 74 | iny"..#.List.of.text.files.for.t |
| 1bec0 | 68 65 20 63 61 63 68 65 20 74 65 73 74 0a 43 41 43 48 45 5f 4c 49 53 54 3d 22 74 69 6e 79 2e 63 | he.cache.test.CACHE_LIST="tiny.c |
| 1bee0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 6d 65 2e 68 74 6d 6c 0a 20 20 20 20 20 20 20 20 20 | .............home.html.......... |
| 1bf00 | 20 20 20 63 73 61 70 70 2e 63 22 0a 0a 23 20 54 68 65 20 66 69 6c 65 20 77 65 20 77 69 6c 6c 20 | ...csapp.c"..#.The.file.we.will. |
| 1bf20 | 66 65 74 63 68 20 66 6f 72 20 76 61 72 69 6f 75 73 20 74 65 73 74 73 0a 46 45 54 43 48 5f 46 49 | fetch.for.various.tests.FETCH_FI |
| 1bf40 | 4c 45 3d 22 68 6f 6d 65 2e 68 74 6d 6c 22 0a 0a 23 23 23 23 23 0a 23 20 48 65 6c 70 65 72 20 66 | LE="home.html"..#####.#.Helper.f |
| 1bf60 | 75 6e 63 74 69 6f 6e 73 0a 23 0a 0a 23 0a 23 20 64 6f 77 6e 6c 6f 61 64 5f 70 72 6f 78 79 20 2d | unctions.#..#.#.download_proxy.- |
| 1bf80 | 20 64 6f 77 6e 6c 6f 61 64 20 61 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 65 20 6f 72 69 67 69 6e | .download.a.file.from.the.origin |
| 1bfa0 | 20 73 65 72 76 65 72 20 76 69 61 20 74 68 65 20 70 72 6f 78 79 0a 23 20 75 73 61 67 65 3a 20 64 | .server.via.the.proxy.#.usage:.d |
| 1bfc0 | 6f 77 6e 6c 6f 61 64 5f 70 72 6f 78 79 20 3c 74 65 73 74 64 69 72 3e 20 3c 66 69 6c 65 6e 61 6d | ownload_proxy.<testdir>.<filenam |
| 1bfe0 | 65 3e 20 3c 6f 72 69 67 69 6e 5f 75 72 6c 3e 20 3c 70 72 6f 78 79 5f 75 72 6c 3e 0a 23 0a 66 75 | e>.<origin_url>.<proxy_url>.#.fu |
| 1c000 | 6e 63 74 69 6f 6e 20 64 6f 77 6e 6c 6f 61 64 5f 70 72 6f 78 79 20 7b 0a 20 20 20 20 63 64 20 24 | nction.download_proxy.{.....cd.$ |
| 1c020 | 31 0a 20 20 20 20 63 75 72 6c 20 2d 2d 6d 61 78 2d 74 69 6d 65 20 24 7b 54 49 4d 45 4f 55 54 7d | 1.....curl.--max-time.${TIMEOUT} |
| 1c040 | 20 2d 2d 73 69 6c 65 6e 74 20 2d 2d 70 72 6f 78 79 20 24 34 20 2d 2d 6f 75 74 70 75 74 20 24 32 | .--silent.--proxy.$4.--output.$2 |
| 1c060 | 20 24 33 0a 20 20 20 20 28 28 20 24 3f 20 3d 3d 20 32 38 20 29 29 20 26 26 20 65 63 68 6f 20 22 | .$3.....((.$?.==.28.)).&&.echo." |
| 1c080 | 45 72 72 6f 72 3a 20 46 65 74 63 68 20 74 69 6d 65 64 20 6f 75 74 20 61 66 74 65 72 20 24 7b 54 | Error:.Fetch.timed.out.after.${T |
| 1c0a0 | 49 4d 45 4f 55 54 7d 20 73 65 63 6f 6e 64 73 22 0a 20 20 20 20 63 64 20 24 48 4f 4d 45 5f 44 49 | IMEOUT}.seconds".....cd.$HOME_DI |
| 1c0c0 | 52 0a 7d 0a 0a 23 0a 23 20 64 6f 77 6e 6c 6f 61 64 5f 6e 6f 70 72 6f 78 79 20 2d 20 64 6f 77 6e | R.}..#.#.download_noproxy.-.down |
| 1c0e0 | 6c 6f 61 64 20 61 20 66 69 6c 65 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 74 68 65 20 6f 72 | load.a.file.directly.from.the.or |
| 1c100 | 69 67 69 6e 20 73 65 72 76 65 72 0a 23 20 75 73 61 67 65 3a 20 64 6f 77 6e 6c 6f 61 64 5f 6e 6f | igin.server.#.usage:.download_no |
| 1c120 | 70 72 6f 78 79 20 3c 74 65 73 74 64 69 72 3e 20 3c 66 69 6c 65 6e 61 6d 65 3e 20 3c 6f 72 69 67 | proxy.<testdir>.<filename>.<orig |
| 1c140 | 69 6e 5f 75 72 6c 3e 0a 23 0a 66 75 6e 63 74 69 6f 6e 20 64 6f 77 6e 6c 6f 61 64 5f 6e 6f 70 72 | in_url>.#.function.download_nopr |
| 1c160 | 6f 78 79 20 7b 0a 20 20 20 20 63 64 20 24 31 0a 20 20 20 20 63 75 72 6c 20 2d 2d 6d 61 78 2d 74 | oxy.{.....cd.$1.....curl.--max-t |
| 1c180 | 69 6d 65 20 24 7b 54 49 4d 45 4f 55 54 7d 20 2d 2d 73 69 6c 65 6e 74 20 2d 2d 6f 75 74 70 75 74 | ime.${TIMEOUT}.--silent.--output |
| 1c1a0 | 20 24 32 20 24 33 20 0a 20 20 20 20 28 28 20 24 3f 20 3d 3d 20 32 38 20 29 29 20 26 26 20 65 63 | .$2.$3......((.$?.==.28.)).&&.ec |
| 1c1c0 | 68 6f 20 22 45 72 72 6f 72 3a 20 46 65 74 63 68 20 74 69 6d 65 64 20 6f 75 74 20 61 66 74 65 72 | ho."Error:.Fetch.timed.out.after |
| 1c1e0 | 20 24 7b 54 49 4d 45 4f 55 54 7d 20 73 65 63 6f 6e 64 73 22 0a 20 20 20 20 63 64 20 24 48 4f 4d | .${TIMEOUT}.seconds".....cd.$HOM |
| 1c200 | 45 5f 44 49 52 0a 7d 0a 0a 23 0a 23 20 63 6c 65 61 72 5f 64 69 72 73 20 2d 20 43 6c 65 61 72 20 | E_DIR.}..#.#.clear_dirs.-.Clear. |
| 1c220 | 74 68 65 20 64 6f 77 6e 6c 6f 61 64 20 64 69 72 65 63 74 6f 72 69 65 73 0a 23 0a 66 75 6e 63 74 | the.download.directories.#.funct |
| 1c240 | 69 6f 6e 20 63 6c 65 61 72 5f 64 69 72 73 20 7b 0a 20 20 20 20 72 6d 20 2d 72 66 20 24 7b 50 52 | ion.clear_dirs.{.....rm.-rf.${PR |
| 1c260 | 4f 58 59 5f 44 49 52 7d 2f 2a 0a 20 20 20 20 72 6d 20 2d 72 66 20 24 7b 4e 4f 50 52 4f 58 59 5f | OXY_DIR}/*.....rm.-rf.${NOPROXY_ |
| 1c280 | 44 49 52 7d 2f 2a 0a 7d 0a 0a 23 0a 23 20 77 61 69 74 5f 66 6f 72 5f 70 6f 72 74 5f 75 73 65 20 | DIR}/*.}..#.#.wait_for_port_use. |
| 1c2a0 | 2d 20 53 70 69 6e 73 20 75 6e 74 69 6c 20 74 68 65 20 54 43 50 20 70 6f 72 74 20 6e 75 6d 62 65 | -.Spins.until.the.TCP.port.numbe |
| 1c2c0 | 72 20 70 61 73 73 65 64 20 61 73 20 61 6e 0a 23 20 20 20 20 20 61 72 67 75 6d 65 6e 74 20 69 73 | r.passed.as.an.#.....argument.is |
| 1c2e0 | 20 61 63 74 75 61 6c 6c 79 20 62 65 69 6e 67 20 75 73 65 64 2e 20 54 69 6d 65 73 20 6f 75 74 20 | .actually.being.used..Times.out. |
| 1c300 | 61 66 74 65 72 20 35 20 73 65 63 6f 6e 64 73 2e 0a 23 0a 66 75 6e 63 74 69 6f 6e 20 77 61 69 74 | after.5.seconds..#.function.wait |
| 1c320 | 5f 66 6f 72 5f 70 6f 72 74 5f 75 73 65 28 29 20 7b 0a 20 20 20 20 74 69 6d 65 6f 75 74 5f 63 6f | _for_port_use().{.....timeout_co |
| 1c340 | 75 6e 74 3d 22 30 22 0a 20 20 20 20 70 6f 72 74 73 69 6e 75 73 65 3d 60 6e 65 74 73 74 61 74 20 | unt="0".....portsinuse=`netstat. |
| 1c360 | 2d 2d 6e 75 6d 65 72 69 63 2d 70 6f 72 74 73 20 2d 2d 6e 75 6d 65 72 69 63 2d 68 6f 73 74 73 20 | --numeric-ports.--numeric-hosts. |
| 1c380 | 2d 61 20 2d 2d 70 72 6f 74 6f 63 6f 6c 3d 74 63 70 69 70 20 5c 0a 20 20 20 20 20 20 20 20 7c 20 | -a.--protocol=tcpip.\.........|. |
| 1c3a0 | 67 72 65 70 20 74 63 70 20 7c 20 63 75 74 20 2d 63 32 31 2d 20 7c 20 63 75 74 20 2d 64 27 3a 27 | grep.tcp.|.cut.-c21-.|.cut.-d':' |
| 1c3c0 | 20 2d 66 32 20 7c 20 63 75 74 20 2d 64 27 20 27 20 2d 66 31 20 5c 0a 20 20 20 20 20 20 20 20 7c | .-f2.|.cut.-d'.'.-f1.\.........| |
| 1c3e0 | 20 67 72 65 70 20 2d 45 20 22 5b 30 2d 39 5d 2b 22 20 7c 20 75 6e 69 71 20 7c 20 74 72 20 22 5c | .grep.-E."[0-9]+".|.uniq.|.tr."\ |
| 1c400 | 6e 22 20 22 20 22 60 0a 0a 20 20 20 20 65 63 68 6f 20 22 24 7b 70 6f 72 74 73 69 6e 75 73 65 7d | n"."."`......echo."${portsinuse} |
| 1c420 | 22 20 7c 20 67 72 65 70 20 2d 77 71 20 22 24 7b 31 7d 22 0a 20 20 20 20 77 68 69 6c 65 20 5b 20 | ".|.grep.-wq."${1}".....while.[. |
| 1c440 | 22 24 3f 22 20 21 3d 20 22 30 22 20 5d 0a 20 20 20 20 64 6f 0a 20 20 20 20 20 20 20 20 74 69 6d | "$?".!=."0".].....do.........tim |
| 1c460 | 65 6f 75 74 5f 63 6f 75 6e 74 3d 60 65 78 70 72 20 24 7b 74 69 6d 65 6f 75 74 5f 63 6f 75 6e 74 | eout_count=`expr.${timeout_count |
| 1c480 | 7d 20 2b 20 31 60 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 7b 74 69 6d 65 6f 75 74 5f 63 | }.+.1`.........if.[."${timeout_c |
| 1c4a0 | 6f 75 6e 74 7d 22 20 3d 3d 20 22 24 7b 4d 41 58 5f 50 4f 52 54 5f 54 52 49 45 53 7d 22 20 5d 3b | ount}".==."${MAX_PORT_TRIES}".]; |
| 1c4c0 | 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6c 6c 20 2d 41 4c 52 4d 20 24 24 0a | .then.............kill.-ALRM.$$. |
| 1c4e0 | 20 20 20 20 20 20 20 20 66 69 0a 0a 20 20 20 20 20 20 20 20 73 6c 65 65 70 20 31 0a 20 20 20 20 | ........fi..........sleep.1..... |
| 1c500 | 20 20 20 20 70 6f 72 74 73 69 6e 75 73 65 3d 60 6e 65 74 73 74 61 74 20 2d 2d 6e 75 6d 65 72 69 | ....portsinuse=`netstat.--numeri |
| 1c520 | 63 2d 70 6f 72 74 73 20 2d 2d 6e 75 6d 65 72 69 63 2d 68 6f 73 74 73 20 2d 61 20 2d 2d 70 72 6f | c-ports.--numeric-hosts.-a.--pro |
| 1c540 | 74 6f 63 6f 6c 3d 74 63 70 69 70 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 67 72 65 70 | tocol=tcpip.\.............|.grep |
| 1c560 | 20 74 63 70 20 7c 20 63 75 74 20 2d 63 32 31 2d 20 7c 20 63 75 74 20 2d 64 27 3a 27 20 2d 66 32 | .tcp.|.cut.-c21-.|.cut.-d':'.-f2 |
| 1c580 | 20 7c 20 63 75 74 20 2d 64 27 20 27 20 2d 66 31 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c | .|.cut.-d'.'.-f1.\.............| |
| 1c5a0 | 20 67 72 65 70 20 2d 45 20 22 5b 30 2d 39 5d 2b 22 20 7c 20 75 6e 69 71 20 7c 20 74 72 20 22 5c | .grep.-E."[0-9]+".|.uniq.|.tr."\ |
| 1c5c0 | 6e 22 20 22 20 22 60 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 24 7b 70 6f 72 74 73 69 6e 75 | n"."."`.........echo."${portsinu |
| 1c5e0 | 73 65 7d 22 20 7c 20 67 72 65 70 20 2d 77 71 20 22 24 7b 31 7d 22 0a 20 20 20 20 64 6f 6e 65 0a | se}".|.grep.-wq."${1}".....done. |
| 1c600 | 7d 0a 0a 0a 23 0a 23 20 66 72 65 65 5f 70 6f 72 74 20 2d 20 72 65 74 75 72 6e 73 20 61 6e 20 61 | }...#.#.free_port.-.returns.an.a |
| 1c620 | 76 61 69 6c 61 62 6c 65 20 75 6e 75 73 65 64 20 54 43 50 20 70 6f 72 74 20 0a 23 0a 66 75 6e 63 | vailable.unused.TCP.port..#.func |
| 1c640 | 74 69 6f 6e 20 66 72 65 65 5f 70 6f 72 74 20 7b 0a 20 20 20 20 23 20 47 65 6e 65 72 61 74 65 20 | tion.free_port.{.....#.Generate. |
| 1c660 | 61 20 72 61 6e 64 6f 6d 20 70 6f 72 74 20 69 6e 20 74 68 65 20 72 61 6e 67 65 20 5b 50 4f 52 54 | a.random.port.in.the.range.[PORT |
| 1c680 | 5f 53 54 41 52 54 2c 0a 20 20 20 20 23 20 50 4f 52 54 5f 53 54 41 52 54 2b 4d 41 58 5f 52 41 4e | _START,.....#.PORT_START+MAX_RAN |
| 1c6a0 | 44 5d 2e 20 54 68 69 73 20 69 73 20 6e 65 65 64 65 64 20 74 6f 20 61 76 6f 69 64 20 63 6f 6c 6c | D]..This.is.needed.to.avoid.coll |
| 1c6c0 | 69 73 69 6f 6e 73 20 77 68 65 6e 20 6d 61 6e 79 0a 20 20 20 20 23 20 73 74 75 64 65 6e 74 73 20 | isions.when.many.....#.students. |
| 1c6e0 | 61 72 65 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 64 72 69 76 65 72 20 6f 6e 20 74 68 65 20 73 61 | are.running.the.driver.on.the.sa |
| 1c700 | 6d 65 20 6d 61 63 68 69 6e 65 2e 0a 20 20 20 20 70 6f 72 74 3d 24 28 28 28 20 52 41 4e 44 4f 4d | me.machine......port=$(((.RANDOM |
| 1c720 | 20 25 20 24 7b 4d 41 58 5f 52 41 4e 44 7d 29 20 2b 20 24 7b 50 4f 52 54 5f 53 54 41 52 54 7d 29 | .%.${MAX_RAND}).+.${PORT_START}) |
| 1c740 | 29 0a 0a 20 20 20 20 77 68 69 6c 65 20 5b 20 54 52 55 45 20 5d 20 0a 20 20 20 20 64 6f 0a 20 20 | )......while.[.TRUE.]......do... |
| 1c760 | 20 20 20 20 20 20 70 6f 72 74 73 69 6e 75 73 65 3d 60 6e 65 74 73 74 61 74 20 2d 2d 6e 75 6d 65 | ......portsinuse=`netstat.--nume |
| 1c780 | 72 69 63 2d 70 6f 72 74 73 20 2d 2d 6e 75 6d 65 72 69 63 2d 68 6f 73 74 73 20 2d 61 20 2d 2d 70 | ric-ports.--numeric-hosts.-a.--p |
| 1c7a0 | 72 6f 74 6f 63 6f 6c 3d 74 63 70 69 70 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 67 72 | rotocol=tcpip.\.............|.gr |
| 1c7c0 | 65 70 20 74 63 70 20 7c 20 63 75 74 20 2d 63 32 31 2d 20 7c 20 63 75 74 20 2d 64 27 3a 27 20 2d | ep.tcp.|.cut.-c21-.|.cut.-d':'.- |
| 1c7e0 | 66 32 20 7c 20 63 75 74 20 2d 64 27 20 27 20 2d 66 31 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 | f2.|.cut.-d'.'.-f1.\............ |
| 1c800 | 20 7c 20 67 72 65 70 20 2d 45 20 22 5b 30 2d 39 5d 2b 22 20 7c 20 75 6e 69 71 20 7c 20 74 72 20 | .|.grep.-E."[0-9]+".|.uniq.|.tr. |
| 1c820 | 22 5c 6e 22 20 22 20 22 60 0a 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 24 7b 70 6f 72 74 73 | "\n"."."`..........echo."${ports |
| 1c840 | 69 6e 75 73 65 7d 22 20 7c 20 67 72 65 70 20 2d 77 71 20 22 24 7b 70 6f 72 74 7d 22 0a 20 20 20 | inuse}".|.grep.-wq."${port}".... |
| 1c860 | 20 20 20 20 20 69 66 20 5b 20 22 24 3f 22 20 3d 3d 20 22 30 22 20 5d 3b 20 74 68 65 6e 0a 20 20 | .....if.[."$?".==."0".];.then... |
| 1c880 | 20 20 20 20 20 20 20 20 20 20 69 66 20 5b 20 24 70 6f 72 74 20 2d 65 71 20 24 7b 50 4f 52 54 5f | ..........if.[.$port.-eq.${PORT_ |
| 1c8a0 | 4d 41 58 7d 20 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 | MAX}.].............then......... |
| 1c8c0 | 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 2d 31 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ........echo."-1"............... |
| 1c8e0 | 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 | ..return.............fi......... |
| 1c900 | 20 20 20 20 70 6f 72 74 3d 60 65 78 70 72 20 24 7b 70 6f 72 74 7d 20 2b 20 31 60 0a 20 20 20 20 | ....port=`expr.${port}.+.1`..... |
| 1c920 | 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 24 7b 70 6f 72 | ....else.............echo."${por |
| 1c940 | 74 7d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 66 | t}".............return.........f |
| 1c960 | 69 0a 20 20 20 20 64 6f 6e 65 0a 7d 0a 0a 0a 23 23 23 23 23 23 23 0a 23 20 4d 61 69 6e 20 0a 23 | i.....done.}...#######.#.Main..# |
| 1c980 | 23 23 23 23 23 23 0a 0a 23 23 23 23 23 23 0a 23 20 56 65 72 69 66 79 20 74 68 61 74 20 77 65 20 | ######..######.#.Verify.that.we. |
| 1c9a0 | 68 61 76 65 20 61 6c 6c 20 6f 66 20 74 68 65 20 65 78 70 65 63 74 65 64 20 66 69 6c 65 73 20 77 | have.all.of.the.expected.files.w |
| 1c9c0 | 69 74 68 20 74 68 65 20 72 69 67 68 74 0a 23 20 70 65 72 6d 69 73 73 69 6f 6e 73 0a 23 0a 0a 23 | ith.the.right.#.permissions.#..# |
| 1c9e0 | 20 4b 69 6c 6c 20 61 6e 79 20 73 74 72 61 79 20 70 72 6f 78 69 65 73 20 6f 72 20 74 69 6e 79 20 | .Kill.any.stray.proxies.or.tiny. |
| 1ca00 | 73 65 72 76 65 72 73 20 6f 77 6e 65 64 20 62 79 20 74 68 69 73 20 75 73 65 72 0a 6b 69 6c 6c 61 | servers.owned.by.this.user.killa |
| 1ca20 | 6c 6c 20 2d 71 20 70 72 6f 78 79 20 74 69 6e 79 20 6e 6f 70 2d 73 65 72 76 65 72 2e 70 79 20 32 | ll.-q.proxy.tiny.nop-server.py.2 |
| 1ca40 | 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a 0a 23 20 4d 61 6b 65 20 73 75 72 65 20 77 65 20 68 61 76 65 | >./dev/null..#.Make.sure.we.have |
| 1ca60 | 20 61 20 54 69 6e 79 20 64 69 72 65 63 74 6f 72 79 0a 69 66 20 5b 20 21 20 2d 64 20 2e 2f 74 69 | .a.Tiny.directory.if.[.!.-d../ti |
| 1ca80 | 6e 79 20 5d 0a 74 68 65 6e 20 0a 20 20 20 20 65 63 68 6f 20 22 45 72 72 6f 72 3a 20 2e 2f 74 69 | ny.].then......echo."Error:../ti |
| 1caa0 | 6e 79 20 64 69 72 65 63 74 6f 72 79 20 6e 6f 74 20 66 6f 75 6e 64 2e 22 0a 20 20 20 20 65 78 69 | ny.directory.not.found.".....exi |
| 1cac0 | 74 0a 66 69 0a 0a 23 20 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 54 69 6e 79 20 65 78 65 63 | t.fi..#.If.there.is.no.Tiny.exec |
| 1cae0 | 75 74 61 62 6c 65 2c 20 74 68 65 6e 20 74 72 79 20 74 6f 20 62 75 69 6c 64 20 69 74 0a 69 66 20 | utable,.then.try.to.build.it.if. |
| 1cb00 | 5b 20 21 20 2d 78 20 2e 2f 74 69 6e 79 2f 74 69 6e 79 20 5d 0a 74 68 65 6e 20 0a 20 20 20 20 65 | [.!.-x../tiny/tiny.].then......e |
| 1cb20 | 63 68 6f 20 22 42 75 69 6c 64 69 6e 67 20 74 68 65 20 74 69 6e 79 20 65 78 65 63 75 74 61 62 6c | cho."Building.the.tiny.executabl |
| 1cb40 | 65 2e 22 0a 20 20 20 20 28 63 64 20 2e 2f 74 69 6e 79 3b 20 6d 61 6b 65 29 0a 20 20 20 20 65 63 | e.".....(cd../tiny;.make).....ec |
| 1cb60 | 68 6f 20 22 22 0a 66 69 0a 0a 23 20 4d 61 6b 65 20 73 75 72 65 20 77 65 20 68 61 76 65 20 61 6c | ho."".fi..#.Make.sure.we.have.al |
| 1cb80 | 6c 20 74 68 65 20 54 69 6e 79 20 66 69 6c 65 73 20 77 65 20 6e 65 65 64 0a 69 66 20 5b 20 21 20 | l.the.Tiny.files.we.need.if.[.!. |
| 1cba0 | 2d 78 20 2e 2f 74 69 6e 79 2f 74 69 6e 79 20 5d 0a 74 68 65 6e 20 0a 20 20 20 20 65 63 68 6f 20 | -x../tiny/tiny.].then......echo. |
| 1cbc0 | 22 45 72 72 6f 72 3a 20 2e 2f 74 69 6e 79 2f 74 69 6e 79 20 6e 6f 74 20 66 6f 75 6e 64 20 6f 72 | "Error:../tiny/tiny.not.found.or |
| 1cbe0 | 20 6e 6f 74 20 61 6e 20 65 78 65 63 75 74 61 62 6c 65 20 66 69 6c 65 2e 22 0a 20 20 20 20 65 78 | .not.an.executable.file.".....ex |
| 1cc00 | 69 74 0a 66 69 0a 66 6f 72 20 66 69 6c 65 20 69 6e 20 24 7b 42 41 53 49 43 5f 4c 49 53 54 7d 0a | it.fi.for.file.in.${BASIC_LIST}. |
| 1cc20 | 64 6f 0a 20 20 20 20 69 66 20 5b 20 21 20 2d 65 20 2e 2f 74 69 6e 79 2f 24 7b 66 69 6c 65 7d 20 | do.....if.[.!.-e../tiny/${file}. |
| 1cc40 | 5d 0a 20 20 20 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 45 72 72 6f 72 3a 20 | ].....then.........echo."Error:. |
| 1cc60 | 2e 2f 74 69 6e 79 2f 24 7b 66 69 6c 65 7d 20 6e 6f 74 20 66 6f 75 6e 64 2e 22 0a 20 20 20 20 20 | ./tiny/${file}.not.found."...... |
| 1cc80 | 20 20 20 65 78 69 74 0a 20 20 20 20 66 69 0a 64 6f 6e 65 0a 0a 23 20 4d 61 6b 65 20 73 75 72 65 | ...exit.....fi.done..#.Make.sure |
| 1cca0 | 20 77 65 20 68 61 76 65 20 61 6e 20 65 78 69 73 74 69 6e 67 20 65 78 65 63 75 74 61 62 6c 65 20 | .we.have.an.existing.executable. |
| 1ccc0 | 70 72 6f 78 79 0a 69 66 20 5b 20 21 20 2d 78 20 2e 2f 70 72 6f 78 79 20 5d 0a 74 68 65 6e 20 0a | proxy.if.[.!.-x../proxy.].then.. |
| 1cce0 | 20 20 20 20 65 63 68 6f 20 22 45 72 72 6f 72 3a 20 2e 2f 70 72 6f 78 79 20 6e 6f 74 20 66 6f 75 | ....echo."Error:../proxy.not.fou |
| 1cd00 | 6e 64 20 6f 72 20 6e 6f 74 20 61 6e 20 65 78 65 63 75 74 61 62 6c 65 20 66 69 6c 65 2e 20 50 6c | nd.or.not.an.executable.file..Pl |
| 1cd20 | 65 61 73 65 20 72 65 62 75 69 6c 64 20 79 6f 75 72 20 70 72 6f 78 79 20 61 6e 64 20 74 72 79 20 | ease.rebuild.your.proxy.and.try. |
| 1cd40 | 61 67 61 69 6e 2e 22 0a 20 20 20 20 65 78 69 74 0a 66 69 0a 0a 23 20 4d 61 6b 65 20 73 75 72 65 | again.".....exit.fi..#.Make.sure |
| 1cd60 | 20 77 65 20 68 61 76 65 20 61 6e 20 65 78 69 73 74 69 6e 67 20 65 78 65 63 75 74 61 62 6c 65 20 | .we.have.an.existing.executable. |
| 1cd80 | 6e 6f 70 2d 73 65 72 76 65 72 2e 70 79 20 66 69 6c 65 0a 69 66 20 5b 20 21 20 2d 78 20 2e 2f 6e | nop-server.py.file.if.[.!.-x../n |
| 1cda0 | 6f 70 2d 73 65 72 76 65 72 2e 70 79 20 5d 0a 74 68 65 6e 20 0a 20 20 20 20 65 63 68 6f 20 22 45 | op-server.py.].then......echo."E |
| 1cdc0 | 72 72 6f 72 3a 20 2e 2f 6e 6f 70 2d 73 65 72 76 65 72 2e 70 79 20 6e 6f 74 20 66 6f 75 6e 64 20 | rror:../nop-server.py.not.found. |
| 1cde0 | 6f 72 20 6e 6f 74 20 61 6e 20 65 78 65 63 75 74 61 62 6c 65 20 66 69 6c 65 2e 22 0a 20 20 20 20 | or.not.an.executable.file."..... |
| 1ce00 | 65 78 69 74 0a 66 69 0a 0a 23 20 43 72 65 61 74 65 20 74 68 65 20 74 65 73 74 20 64 69 72 65 63 | exit.fi..#.Create.the.test.direc |
| 1ce20 | 74 6f 72 69 65 73 20 69 66 20 6e 65 65 64 65 64 0a 69 66 20 5b 20 21 20 2d 64 20 24 7b 50 52 4f | tories.if.needed.if.[.!.-d.${PRO |
| 1ce40 | 58 59 5f 44 49 52 7d 20 5d 0a 74 68 65 6e 0a 20 20 20 20 6d 6b 64 69 72 20 24 7b 50 52 4f 58 59 | XY_DIR}.].then.....mkdir.${PROXY |
| 1ce60 | 5f 44 49 52 7d 0a 66 69 0a 0a 69 66 20 5b 20 21 20 2d 64 20 24 7b 4e 4f 50 52 4f 58 59 5f 44 49 | _DIR}.fi..if.[.!.-d.${NOPROXY_DI |
| 1ce80 | 52 7d 20 5d 0a 74 68 65 6e 0a 20 20 20 20 6d 6b 64 69 72 20 24 7b 4e 4f 50 52 4f 58 59 5f 44 49 | R}.].then.....mkdir.${NOPROXY_DI |
| 1cea0 | 52 7d 0a 66 69 0a 0a 23 20 41 64 64 20 61 20 68 61 6e 64 6c 65 72 20 74 6f 20 67 65 6e 65 72 61 | R}.fi..#.Add.a.handler.to.genera |
| 1cec0 | 74 65 20 61 20 6d 65 61 6e 69 6e 67 66 75 6c 20 74 69 6d 65 6f 75 74 20 6d 65 73 73 61 67 65 0a | te.a.meaningful.timeout.message. |
| 1cee0 | 74 72 61 70 20 27 65 63 68 6f 20 22 54 69 6d 65 6f 75 74 20 77 61 69 74 69 6e 67 20 66 6f 72 20 | trap.'echo."Timeout.waiting.for. |
| 1cf00 | 74 68 65 20 73 65 72 76 65 72 20 74 6f 20 67 72 61 62 20 74 68 65 20 70 6f 72 74 20 72 65 73 65 | the.server.to.grab.the.port.rese |
| 1cf20 | 72 76 65 64 20 66 6f 72 20 69 74 22 3b 20 6b 69 6c 6c 20 24 24 27 20 41 4c 52 4d 0a 0a 23 23 23 | rved.for.it";.kill.$$'.ALRM..### |
| 1cf40 | 23 23 0a 23 20 42 61 73 69 63 0a 23 0a 65 63 68 6f 20 22 2a 2a 2a 20 42 61 73 69 63 20 2a 2a 2a | ##.#.Basic.#.echo."***.Basic.*** |
| 1cf60 | 22 0a 0a 23 20 52 75 6e 20 74 68 65 20 54 69 6e 79 20 57 65 62 20 73 65 72 76 65 72 0a 74 69 6e | "..#.Run.the.Tiny.Web.server.tin |
| 1cf80 | 79 5f 70 6f 72 74 3d 24 28 66 72 65 65 5f 70 6f 72 74 29 0a 65 63 68 6f 20 22 53 74 61 72 74 69 | y_port=$(free_port).echo."Starti |
| 1cfa0 | 6e 67 20 74 69 6e 79 20 6f 6e 20 24 7b 74 69 6e 79 5f 70 6f 72 74 7d 22 0a 63 64 20 2e 2f 74 69 | ng.tiny.on.${tiny_port}".cd../ti |
| 1cfc0 | 6e 79 0a 2e 2f 74 69 6e 79 20 24 7b 74 69 6e 79 5f 70 6f 72 74 7d 20 20 20 26 3e 20 2f 64 65 76 | ny../tiny.${tiny_port}...&>./dev |
| 1cfe0 | 2f 6e 75 6c 6c 20 20 26 0a 74 69 6e 79 5f 70 69 64 3d 24 21 0a 63 64 20 24 7b 48 4f 4d 45 5f 44 | /null..&.tiny_pid=$!.cd.${HOME_D |
| 1d000 | 49 52 7d 0a 0a 23 20 57 61 69 74 20 66 6f 72 20 74 69 6e 79 20 74 6f 20 73 74 61 72 74 20 69 6e | IR}..#.Wait.for.tiny.to.start.in |
| 1d020 | 20 65 61 72 6e 65 73 74 0a 77 61 69 74 5f 66 6f 72 5f 70 6f 72 74 5f 75 73 65 20 22 24 7b 74 69 | .earnest.wait_for_port_use."${ti |
| 1d040 | 6e 79 5f 70 6f 72 74 7d 22 0a 0a 23 20 52 75 6e 20 74 68 65 20 70 72 6f 78 79 0a 70 72 6f 78 79 | ny_port}"..#.Run.the.proxy.proxy |
| 1d060 | 5f 70 6f 72 74 3d 24 28 66 72 65 65 5f 70 6f 72 74 29 0a 65 63 68 6f 20 22 53 74 61 72 74 69 6e | _port=$(free_port).echo."Startin |
| 1d080 | 67 20 70 72 6f 78 79 20 6f 6e 20 24 7b 70 72 6f 78 79 5f 70 6f 72 74 7d 22 0a 2e 2f 70 72 6f 78 | g.proxy.on.${proxy_port}"../prox |
| 1d0a0 | 79 20 24 7b 70 72 6f 78 79 5f 70 6f 72 74 7d 20 20 26 3e 20 2f 64 65 76 2f 6e 75 6c 6c 20 26 0a | y.${proxy_port}..&>./dev/null.&. |
| 1d0c0 | 70 72 6f 78 79 5f 70 69 64 3d 24 21 0a 0a 23 20 57 61 69 74 20 66 6f 72 20 74 68 65 20 70 72 6f | proxy_pid=$!..#.Wait.for.the.pro |
| 1d0e0 | 78 79 20 74 6f 20 73 74 61 72 74 20 69 6e 20 65 61 72 6e 65 73 74 0a 77 61 69 74 5f 66 6f 72 5f | xy.to.start.in.earnest.wait_for_ |
| 1d100 | 70 6f 72 74 5f 75 73 65 20 22 24 7b 70 72 6f 78 79 5f 70 6f 72 74 7d 22 0a 0a 0a 23 20 4e 6f 77 | port_use."${proxy_port}"...#.Now |
| 1d120 | 20 64 6f 20 74 68 65 20 74 65 73 74 20 62 79 20 66 65 74 63 68 69 6e 67 20 73 6f 6d 65 20 74 65 | .do.the.test.by.fetching.some.te |
| 1d140 | 78 74 20 61 6e 64 20 62 69 6e 61 72 79 20 66 69 6c 65 73 20 64 69 72 65 63 74 6c 79 20 66 72 6f | xt.and.binary.files.directly.fro |
| 1d160 | 6d 0a 23 20 54 69 6e 79 20 61 6e 64 20 76 69 61 20 74 68 65 20 70 72 6f 78 79 2c 20 61 6e 64 20 | m.#.Tiny.and.via.the.proxy,.and. |
| 1d180 | 74 68 65 6e 20 63 6f 6d 70 61 72 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 73 2e 0a 6e 75 6d 52 | then.comparing.the.results..numR |
| 1d1a0 | 75 6e 3d 30 0a 6e 75 6d 53 75 63 63 65 65 64 65 64 3d 30 0a 66 6f 72 20 66 69 6c 65 20 69 6e 20 | un=0.numSucceeded=0.for.file.in. |
| 1d1c0 | 24 7b 42 41 53 49 43 5f 4c 49 53 54 7d 0a 64 6f 0a 20 20 20 20 6e 75 6d 52 75 6e 3d 60 65 78 70 | ${BASIC_LIST}.do.....numRun=`exp |
| 1d1e0 | 72 20 24 6e 75 6d 52 75 6e 20 2b 20 31 60 0a 20 20 20 20 65 63 68 6f 20 22 24 7b 6e 75 6d 52 75 | r.$numRun.+.1`.....echo."${numRu |
| 1d200 | 6e 7d 3a 20 24 7b 66 69 6c 65 7d 22 0a 20 20 20 20 63 6c 65 61 72 5f 64 69 72 73 0a 0a 20 20 20 | n}:.${file}".....clear_dirs..... |
| 1d220 | 20 23 20 46 65 74 63 68 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 78 79 0a 20 20 20 20 65 63 68 | .#.Fetch.using.the.proxy.....ech |
| 1d240 | 6f 20 22 20 20 20 46 65 74 63 68 69 6e 67 20 2e 2f 74 69 6e 79 2f 24 7b 66 69 6c 65 7d 20 69 6e | o."...Fetching../tiny/${file}.in |
| 1d260 | 74 6f 20 24 7b 50 52 4f 58 59 5f 44 49 52 7d 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 78 79 22 | to.${PROXY_DIR}.using.the.proxy" |
| 1d280 | 0a 20 20 20 20 64 6f 77 6e 6c 6f 61 64 5f 70 72 6f 78 79 20 24 50 52 4f 58 59 5f 44 49 52 20 24 | .....download_proxy.$PROXY_DIR.$ |
| 1d2a0 | 7b 66 69 6c 65 7d 20 22 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 24 7b 74 69 6e 79 5f | {file}."http://localhost:${tiny_ |
| 1d2c0 | 70 6f 72 74 7d 2f 24 7b 66 69 6c 65 7d 22 20 22 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 | port}/${file}"."http://localhost |
| 1d2e0 | 3a 24 7b 70 72 6f 78 79 5f 70 6f 72 74 7d 22 0a 0a 20 20 20 20 23 20 46 65 74 63 68 20 64 69 72 | :${proxy_port}"......#.Fetch.dir |
| 1d300 | 65 63 74 6c 79 20 66 72 6f 6d 20 54 69 6e 79 0a 20 20 20 20 65 63 68 6f 20 22 20 20 20 46 65 74 | ectly.from.Tiny.....echo."...Fet |
| 1d320 | 63 68 69 6e 67 20 2e 2f 74 69 6e 79 2f 24 7b 66 69 6c 65 7d 20 69 6e 74 6f 20 24 7b 4e 4f 50 52 | ching../tiny/${file}.into.${NOPR |
| 1d340 | 4f 58 59 5f 44 49 52 7d 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 54 69 6e 79 22 0a 20 20 20 | OXY_DIR}.directly.from.Tiny".... |
| 1d360 | 20 64 6f 77 6e 6c 6f 61 64 5f 6e 6f 70 72 6f 78 79 20 24 4e 4f 50 52 4f 58 59 5f 44 49 52 20 24 | .download_noproxy.$NOPROXY_DIR.$ |
| 1d380 | 7b 66 69 6c 65 7d 20 22 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 24 7b 74 69 6e 79 5f | {file}."http://localhost:${tiny_ |
| 1d3a0 | 70 6f 72 74 7d 2f 24 7b 66 69 6c 65 7d 22 0a 0a 20 20 20 20 23 20 43 6f 6d 70 61 72 65 20 74 68 | port}/${file}"......#.Compare.th |
| 1d3c0 | 65 20 74 77 6f 20 66 69 6c 65 73 0a 20 20 20 20 65 63 68 6f 20 22 20 20 20 43 6f 6d 70 61 72 69 | e.two.files.....echo."...Compari |
| 1d3e0 | 6e 67 20 74 68 65 20 74 77 6f 20 66 69 6c 65 73 22 0a 20 20 20 20 64 69 66 66 20 2d 71 20 24 7b | ng.the.two.files".....diff.-q.${ |
| 1d400 | 50 52 4f 58 59 5f 44 49 52 7d 2f 24 7b 66 69 6c 65 7d 20 24 7b 4e 4f 50 52 4f 58 59 5f 44 49 52 | PROXY_DIR}/${file}.${NOPROXY_DIR |
| 1d420 | 7d 2f 24 7b 66 69 6c 65 7d 20 26 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a 20 20 20 20 69 66 20 5b 20 | }/${file}.&>./dev/null.....if.[. |
| 1d440 | 24 3f 20 2d 65 71 20 30 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 6e 75 6d 53 75 63 63 | $?.-eq.0.];.then.........numSucc |
| 1d460 | 65 65 64 65 64 3d 60 65 78 70 72 20 24 7b 6e 75 6d 53 75 63 63 65 65 64 65 64 7d 20 2b 20 31 60 | eeded=`expr.${numSucceeded}.+.1` |
| 1d480 | 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 20 20 53 75 63 63 65 73 73 3a 20 46 69 6c 65 73 | .........echo."...Success:.Files |
| 1d4a0 | 20 61 72 65 20 69 64 65 6e 74 69 63 61 6c 2e 22 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 | .are.identical.".....else....... |
| 1d4c0 | 20 20 65 63 68 6f 20 22 20 20 20 46 61 69 6c 75 72 65 3a 20 46 69 6c 65 73 20 64 69 66 66 65 72 | ..echo."...Failure:.Files.differ |
| 1d4e0 | 2e 22 0a 20 20 20 20 66 69 0a 64 6f 6e 65 0a 0a 65 63 68 6f 20 22 4b 69 6c 6c 69 6e 67 20 74 69 | .".....fi.done..echo."Killing.ti |
| 1d500 | 6e 79 20 61 6e 64 20 70 72 6f 78 79 22 0a 6b 69 6c 6c 20 24 74 69 6e 79 5f 70 69 64 20 32 3e 20 | ny.and.proxy".kill.$tiny_pid.2>. |
| 1d520 | 2f 64 65 76 2f 6e 75 6c 6c 0a 77 61 69 74 20 24 74 69 6e 79 5f 70 69 64 20 32 3e 20 2f 64 65 76 | /dev/null.wait.$tiny_pid.2>./dev |
| 1d540 | 2f 6e 75 6c 6c 0a 6b 69 6c 6c 20 24 70 72 6f 78 79 5f 70 69 64 20 32 3e 20 2f 64 65 76 2f 6e 75 | /null.kill.$proxy_pid.2>./dev/nu |
| 1d560 | 6c 6c 0a 77 61 69 74 20 24 70 72 6f 78 79 5f 70 69 64 20 32 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a | ll.wait.$proxy_pid.2>./dev/null. |
| 1d580 | 0a 62 61 73 69 63 53 63 6f 72 65 3d 60 65 78 70 72 20 24 7b 4d 41 58 5f 42 41 53 49 43 7d 20 5c | .basicScore=`expr.${MAX_BASIC}.\ |
| 1d5a0 | 2a 20 24 7b 6e 75 6d 53 75 63 63 65 65 64 65 64 7d 20 2f 20 24 7b 6e 75 6d 52 75 6e 7d 60 0a 0a | *.${numSucceeded}./.${numRun}`.. |
| 1d5c0 | 65 63 68 6f 20 22 62 61 73 69 63 53 63 6f 72 65 3a 20 24 62 61 73 69 63 53 63 6f 72 65 2f 24 7b | echo."basicScore:.$basicScore/${ |
| 1d5e0 | 4d 41 58 5f 42 41 53 49 43 7d 22 0a 0a 0a 23 23 23 23 23 23 0a 23 20 43 6f 6e 63 75 72 72 65 6e | MAX_BASIC}"...######.#.Concurren |
| 1d600 | 63 79 0a 23 0a 0a 65 63 68 6f 20 22 22 0a 65 63 68 6f 20 22 2a 2a 2a 20 43 6f 6e 63 75 72 72 65 | cy.#..echo."".echo."***.Concurre |
| 1d620 | 6e 63 79 20 2a 2a 2a 22 0a 0a 23 20 52 75 6e 20 74 68 65 20 54 69 6e 79 20 57 65 62 20 73 65 72 | ncy.***"..#.Run.the.Tiny.Web.ser |
| 1d640 | 76 65 72 0a 74 69 6e 79 5f 70 6f 72 74 3d 24 28 66 72 65 65 5f 70 6f 72 74 29 0a 65 63 68 6f 20 | ver.tiny_port=$(free_port).echo. |
| 1d660 | 22 53 74 61 72 74 69 6e 67 20 74 69 6e 79 20 6f 6e 20 70 6f 72 74 20 24 7b 74 69 6e 79 5f 70 6f | "Starting.tiny.on.port.${tiny_po |
| 1d680 | 72 74 7d 22 0a 63 64 20 2e 2f 74 69 6e 79 0a 2e 2f 74 69 6e 79 20 24 7b 74 69 6e 79 5f 70 6f 72 | rt}".cd../tiny../tiny.${tiny_por |
| 1d6a0 | 74 7d 20 26 3e 20 2f 64 65 76 2f 6e 75 6c 6c 20 26 0a 74 69 6e 79 5f 70 69 64 3d 24 21 0a 63 64 | t}.&>./dev/null.&.tiny_pid=$!.cd |
| 1d6c0 | 20 24 7b 48 4f 4d 45 5f 44 49 52 7d 0a 0a 23 20 57 61 69 74 20 66 6f 72 20 74 69 6e 79 20 74 6f | .${HOME_DIR}..#.Wait.for.tiny.to |
| 1d6e0 | 20 73 74 61 72 74 20 69 6e 20 65 61 72 6e 65 73 74 0a 77 61 69 74 5f 66 6f 72 5f 70 6f 72 74 5f | .start.in.earnest.wait_for_port_ |
| 1d700 | 75 73 65 20 22 24 7b 74 69 6e 79 5f 70 6f 72 74 7d 22 0a 0a 23 20 52 75 6e 20 74 68 65 20 70 72 | use."${tiny_port}"..#.Run.the.pr |
| 1d720 | 6f 78 79 0a 70 72 6f 78 79 5f 70 6f 72 74 3d 24 28 66 72 65 65 5f 70 6f 72 74 29 0a 65 63 68 6f | oxy.proxy_port=$(free_port).echo |
| 1d740 | 20 22 53 74 61 72 74 69 6e 67 20 70 72 6f 78 79 20 6f 6e 20 70 6f 72 74 20 24 7b 70 72 6f 78 79 | ."Starting.proxy.on.port.${proxy |
| 1d760 | 5f 70 6f 72 74 7d 22 0a 2e 2f 70 72 6f 78 79 20 24 7b 70 72 6f 78 79 5f 70 6f 72 74 7d 20 26 3e | _port}"../proxy.${proxy_port}.&> |
| 1d780 | 20 2f 64 65 76 2f 6e 75 6c 6c 20 26 0a 70 72 6f 78 79 5f 70 69 64 3d 24 21 0a 0a 23 20 57 61 69 | ./dev/null.&.proxy_pid=$!..#.Wai |
| 1d7a0 | 74 20 66 6f 72 20 74 68 65 20 70 72 6f 78 79 20 74 6f 20 73 74 61 72 74 20 69 6e 20 65 61 72 6e | t.for.the.proxy.to.start.in.earn |
| 1d7c0 | 65 73 74 0a 77 61 69 74 5f 66 6f 72 5f 70 6f 72 74 5f 75 73 65 20 22 24 7b 70 72 6f 78 79 5f 70 | est.wait_for_port_use."${proxy_p |
| 1d7e0 | 6f 72 74 7d 22 0a 0a 23 20 52 75 6e 20 61 20 73 70 65 63 69 61 6c 20 62 6c 6f 63 6b 69 6e 67 20 | ort}"..#.Run.a.special.blocking. |
| 1d800 | 6e 6f 70 2d 73 65 72 76 65 72 20 74 68 61 74 20 6e 65 76 65 72 20 72 65 73 70 6f 6e 64 73 20 74 | nop-server.that.never.responds.t |
| 1d820 | 6f 20 72 65 71 75 65 73 74 73 0a 6e 6f 70 5f 70 6f 72 74 3d 24 28 66 72 65 65 5f 70 6f 72 74 29 | o.requests.nop_port=$(free_port) |
| 1d840 | 0a 65 63 68 6f 20 22 53 74 61 72 74 69 6e 67 20 74 68 65 20 62 6c 6f 63 6b 69 6e 67 20 4e 4f 50 | .echo."Starting.the.blocking.NOP |
| 1d860 | 20 73 65 72 76 65 72 20 6f 6e 20 70 6f 72 74 20 24 7b 6e 6f 70 5f 70 6f 72 74 7d 22 0a 2e 2f 6e | .server.on.port.${nop_port}"../n |
| 1d880 | 6f 70 2d 73 65 72 76 65 72 2e 70 79 20 24 7b 6e 6f 70 5f 70 6f 72 74 7d 20 26 3e 20 2f 64 65 76 | op-server.py.${nop_port}.&>./dev |
| 1d8a0 | 2f 6e 75 6c 6c 20 26 0a 6e 6f 70 5f 70 69 64 3d 24 21 0a 0a 23 20 57 61 69 74 20 66 6f 72 20 74 | /null.&.nop_pid=$!..#.Wait.for.t |
| 1d8c0 | 68 65 20 6e 6f 70 20 73 65 72 76 65 72 20 74 6f 20 73 74 61 72 74 20 69 6e 20 65 61 72 6e 65 73 | he.nop.server.to.start.in.earnes |
| 1d8e0 | 74 0a 77 61 69 74 5f 66 6f 72 5f 70 6f 72 74 5f 75 73 65 20 22 24 7b 6e 6f 70 5f 70 6f 72 74 7d | t.wait_for_port_use."${nop_port} |
| 1d900 | 22 0a 0a 23 20 54 72 79 20 74 6f 20 66 65 74 63 68 20 61 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 | "..#.Try.to.fetch.a.file.from.th |
| 1d920 | 65 20 62 6c 6f 63 6b 69 6e 67 20 6e 6f 70 2d 73 65 72 76 65 72 20 75 73 69 6e 67 20 74 68 65 20 | e.blocking.nop-server.using.the. |
| 1d940 | 70 72 6f 78 79 0a 63 6c 65 61 72 5f 64 69 72 73 0a 65 63 68 6f 20 22 54 72 79 69 6e 67 20 74 6f | proxy.clear_dirs.echo."Trying.to |
| 1d960 | 20 66 65 74 63 68 20 61 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 65 20 62 6c 6f 63 6b 69 6e 67 20 | .fetch.a.file.from.the.blocking. |
| 1d980 | 6e 6f 70 2d 73 65 72 76 65 72 22 0a 64 6f 77 6e 6c 6f 61 64 5f 70 72 6f 78 79 20 24 50 52 4f 58 | nop-server".download_proxy.$PROX |
| 1d9a0 | 59 5f 44 49 52 20 22 6e 6f 70 2d 66 69 6c 65 2e 74 78 74 22 20 22 68 74 74 70 3a 2f 2f 6c 6f 63 | Y_DIR."nop-file.txt"."http://loc |
| 1d9c0 | 61 6c 68 6f 73 74 3a 24 7b 6e 6f 70 5f 70 6f 72 74 7d 2f 6e 6f 70 2d 66 69 6c 65 2e 74 78 74 22 | alhost:${nop_port}/nop-file.txt" |
| 1d9e0 | 20 22 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 24 7b 70 72 6f 78 79 5f 70 6f 72 74 7d | ."http://localhost:${proxy_port} |
| 1da00 | 22 20 26 0a 0a 23 20 46 65 74 63 68 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 54 69 6e 79 0a | ".&..#.Fetch.directly.from.Tiny. |
| 1da20 | 65 63 68 6f 20 22 46 65 74 63 68 69 6e 67 20 2e 2f 74 69 6e 79 2f 24 7b 46 45 54 43 48 5f 46 49 | echo."Fetching../tiny/${FETCH_FI |
| 1da40 | 4c 45 7d 20 69 6e 74 6f 20 24 7b 4e 4f 50 52 4f 58 59 5f 44 49 52 7d 20 64 69 72 65 63 74 6c 79 | LE}.into.${NOPROXY_DIR}.directly |
| 1da60 | 20 66 72 6f 6d 20 54 69 6e 79 22 0a 64 6f 77 6e 6c 6f 61 64 5f 6e 6f 70 72 6f 78 79 20 24 4e 4f | .from.Tiny".download_noproxy.$NO |
| 1da80 | 50 52 4f 58 59 5f 44 49 52 20 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 20 22 68 74 74 70 3a 2f 2f | PROXY_DIR.${FETCH_FILE}."http:// |
| 1daa0 | 6c 6f 63 61 6c 68 6f 73 74 3a 24 7b 74 69 6e 79 5f 70 6f 72 74 7d 2f 24 7b 46 45 54 43 48 5f 46 | localhost:${tiny_port}/${FETCH_F |
| 1dac0 | 49 4c 45 7d 22 0a 0a 23 20 46 65 74 63 68 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 78 79 0a 65 | ILE}"..#.Fetch.using.the.proxy.e |
| 1dae0 | 63 68 6f 20 22 46 65 74 63 68 69 6e 67 20 2e 2f 74 69 6e 79 2f 24 7b 46 45 54 43 48 5f 46 49 4c | cho."Fetching../tiny/${FETCH_FIL |
| 1db00 | 45 7d 20 69 6e 74 6f 20 24 7b 50 52 4f 58 59 5f 44 49 52 7d 20 75 73 69 6e 67 20 74 68 65 20 70 | E}.into.${PROXY_DIR}.using.the.p |
| 1db20 | 72 6f 78 79 22 0a 64 6f 77 6e 6c 6f 61 64 5f 70 72 6f 78 79 20 24 50 52 4f 58 59 5f 44 49 52 20 | roxy".download_proxy.$PROXY_DIR. |
| 1db40 | 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 20 22 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a | ${FETCH_FILE}."http://localhost: |
| 1db60 | 24 7b 74 69 6e 79 5f 70 6f 72 74 7d 2f 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 22 20 22 68 74 74 | ${tiny_port}/${FETCH_FILE}"."htt |
| 1db80 | 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 24 7b 70 72 6f 78 79 5f 70 6f 72 74 7d 22 0a 0a 23 20 | p://localhost:${proxy_port}"..#. |
| 1dba0 | 53 65 65 20 69 66 20 74 68 65 20 70 72 6f 78 79 20 66 65 74 63 68 20 73 75 63 63 65 65 64 65 64 | See.if.the.proxy.fetch.succeeded |
| 1dbc0 | 0a 65 63 68 6f 20 22 43 68 65 63 6b 69 6e 67 20 77 68 65 74 68 65 72 20 74 68 65 20 70 72 6f 78 | .echo."Checking.whether.the.prox |
| 1dbe0 | 79 20 66 65 74 63 68 20 73 75 63 63 65 65 64 65 64 22 0a 64 69 66 66 20 2d 71 20 24 7b 50 52 4f | y.fetch.succeeded".diff.-q.${PRO |
| 1dc00 | 58 59 5f 44 49 52 7d 2f 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 20 24 7b 4e 4f 50 52 4f 58 59 5f | XY_DIR}/${FETCH_FILE}.${NOPROXY_ |
| 1dc20 | 44 49 52 7d 2f 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 20 26 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a | DIR}/${FETCH_FILE}.&>./dev/null. |
| 1dc40 | 69 66 20 5b 20 24 3f 20 2d 65 71 20 30 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 63 6f 6e 63 75 72 | if.[.$?.-eq.0.];.then.....concur |
| 1dc60 | 72 65 6e 63 79 53 63 6f 72 65 3d 24 7b 4d 41 58 5f 43 4f 4e 43 55 52 52 45 4e 43 59 7d 0a 20 20 | rencyScore=${MAX_CONCURRENCY}... |
| 1dc80 | 20 20 65 63 68 6f 20 22 53 75 63 63 65 73 73 3a 20 57 61 73 20 61 62 6c 65 20 74 6f 20 66 65 74 | ..echo."Success:.Was.able.to.fet |
| 1dca0 | 63 68 20 74 69 6e 79 2f 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 20 66 72 6f 6d 20 74 68 65 20 70 | ch.tiny/${FETCH_FILE}.from.the.p |
| 1dcc0 | 72 6f 78 79 2e 22 0a 65 6c 73 65 0a 20 20 20 20 63 6f 6e 63 75 72 72 65 6e 63 79 53 63 6f 72 65 | roxy.".else.....concurrencyScore |
| 1dce0 | 3d 30 0a 20 20 20 20 65 63 68 6f 20 22 46 61 69 6c 75 72 65 3a 20 57 61 73 20 6e 6f 74 20 61 62 | =0.....echo."Failure:.Was.not.ab |
| 1dd00 | 6c 65 20 74 6f 20 66 65 74 63 68 20 74 69 6e 79 2f 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 20 66 | le.to.fetch.tiny/${FETCH_FILE}.f |
| 1dd20 | 72 6f 6d 20 74 68 65 20 70 72 6f 78 79 2e 22 0a 66 69 0a 0a 23 20 43 6c 65 61 6e 20 75 70 0a 65 | rom.the.proxy.".fi..#.Clean.up.e |
| 1dd40 | 63 68 6f 20 22 4b 69 6c 6c 69 6e 67 20 74 69 6e 79 2c 20 70 72 6f 78 79 2c 20 61 6e 64 20 6e 6f | cho."Killing.tiny,.proxy,.and.no |
| 1dd60 | 70 2d 73 65 72 76 65 72 22 0a 6b 69 6c 6c 20 24 74 69 6e 79 5f 70 69 64 20 32 3e 20 2f 64 65 76 | p-server".kill.$tiny_pid.2>./dev |
| 1dd80 | 2f 6e 75 6c 6c 0a 77 61 69 74 20 24 74 69 6e 79 5f 70 69 64 20 32 3e 20 2f 64 65 76 2f 6e 75 6c | /null.wait.$tiny_pid.2>./dev/nul |
| 1dda0 | 6c 0a 6b 69 6c 6c 20 24 70 72 6f 78 79 5f 70 69 64 20 32 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a 77 | l.kill.$proxy_pid.2>./dev/null.w |
| 1ddc0 | 61 69 74 20 24 70 72 6f 78 79 5f 70 69 64 20 32 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a 6b 69 6c 6c | ait.$proxy_pid.2>./dev/null.kill |
| 1dde0 | 20 24 6e 6f 70 5f 70 69 64 20 32 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a 77 61 69 74 20 24 6e 6f 70 | .$nop_pid.2>./dev/null.wait.$nop |
| 1de00 | 5f 70 69 64 20 32 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a 0a 65 63 68 6f 20 22 63 6f 6e 63 75 72 72 | _pid.2>./dev/null..echo."concurr |
| 1de20 | 65 6e 63 79 53 63 6f 72 65 3a 20 24 63 6f 6e 63 75 72 72 65 6e 63 79 53 63 6f 72 65 2f 24 7b 4d | encyScore:.$concurrencyScore/${M |
| 1de40 | 41 58 5f 43 4f 4e 43 55 52 52 45 4e 43 59 7d 22 0a 0a 23 23 23 23 23 0a 23 20 43 61 63 68 69 6e | AX_CONCURRENCY}"..#####.#.Cachin |
| 1de60 | 67 0a 23 0a 65 63 68 6f 20 22 22 0a 65 63 68 6f 20 22 2a 2a 2a 20 43 61 63 68 65 20 2a 2a 2a 22 | g.#.echo."".echo."***.Cache.***" |
| 1de80 | 0a 0a 23 20 52 75 6e 20 74 68 65 20 54 69 6e 79 20 57 65 62 20 73 65 72 76 65 72 0a 74 69 6e 79 | ..#.Run.the.Tiny.Web.server.tiny |
| 1dea0 | 5f 70 6f 72 74 3d 24 28 66 72 65 65 5f 70 6f 72 74 29 0a 65 63 68 6f 20 22 53 74 61 72 74 69 6e | _port=$(free_port).echo."Startin |
| 1dec0 | 67 20 74 69 6e 79 20 6f 6e 20 70 6f 72 74 20 24 7b 74 69 6e 79 5f 70 6f 72 74 7d 22 0a 63 64 20 | g.tiny.on.port.${tiny_port}".cd. |
| 1dee0 | 2e 2f 74 69 6e 79 0a 2e 2f 74 69 6e 79 20 24 7b 74 69 6e 79 5f 70 6f 72 74 7d 20 26 3e 20 2f 64 | ./tiny../tiny.${tiny_port}.&>./d |
| 1df00 | 65 76 2f 6e 75 6c 6c 20 26 0a 74 69 6e 79 5f 70 69 64 3d 24 21 0a 63 64 20 24 7b 48 4f 4d 45 5f | ev/null.&.tiny_pid=$!.cd.${HOME_ |
| 1df20 | 44 49 52 7d 0a 0a 23 20 57 61 69 74 20 66 6f 72 20 74 69 6e 79 20 74 6f 20 73 74 61 72 74 20 69 | DIR}..#.Wait.for.tiny.to.start.i |
| 1df40 | 6e 20 65 61 72 6e 65 73 74 0a 77 61 69 74 5f 66 6f 72 5f 70 6f 72 74 5f 75 73 65 20 22 24 7b 74 | n.earnest.wait_for_port_use."${t |
| 1df60 | 69 6e 79 5f 70 6f 72 74 7d 22 0a 0a 23 20 52 75 6e 20 74 68 65 20 70 72 6f 78 79 0a 70 72 6f 78 | iny_port}"..#.Run.the.proxy.prox |
| 1df80 | 79 5f 70 6f 72 74 3d 24 28 66 72 65 65 5f 70 6f 72 74 29 0a 65 63 68 6f 20 22 53 74 61 72 74 69 | y_port=$(free_port).echo."Starti |
| 1dfa0 | 6e 67 20 70 72 6f 78 79 20 6f 6e 20 70 6f 72 74 20 24 7b 70 72 6f 78 79 5f 70 6f 72 74 7d 22 0a | ng.proxy.on.port.${proxy_port}". |
| 1dfc0 | 2e 2f 70 72 6f 78 79 20 24 7b 70 72 6f 78 79 5f 70 6f 72 74 7d 20 26 3e 20 2f 64 65 76 2f 6e 75 | ./proxy.${proxy_port}.&>./dev/nu |
| 1dfe0 | 6c 6c 20 26 0a 70 72 6f 78 79 5f 70 69 64 3d 24 21 0a 0a 23 20 57 61 69 74 20 66 6f 72 20 74 68 | ll.&.proxy_pid=$!..#.Wait.for.th |
| 1e000 | 65 20 70 72 6f 78 79 20 74 6f 20 73 74 61 72 74 20 69 6e 20 65 61 72 6e 65 73 74 0a 77 61 69 74 | e.proxy.to.start.in.earnest.wait |
| 1e020 | 5f 66 6f 72 5f 70 6f 72 74 5f 75 73 65 20 22 24 7b 70 72 6f 78 79 5f 70 6f 72 74 7d 22 0a 0a 23 | _for_port_use."${proxy_port}"..# |
| 1e040 | 20 46 65 74 63 68 20 73 6f 6d 65 20 66 69 6c 65 73 20 66 72 6f 6d 20 74 69 6e 79 20 75 73 69 6e | .Fetch.some.files.from.tiny.usin |
| 1e060 | 67 20 74 68 65 20 70 72 6f 78 79 0a 63 6c 65 61 72 5f 64 69 72 73 0a 66 6f 72 20 66 69 6c 65 20 | g.the.proxy.clear_dirs.for.file. |
| 1e080 | 69 6e 20 24 7b 43 41 43 48 45 5f 4c 49 53 54 7d 0a 64 6f 0a 20 20 20 20 65 63 68 6f 20 22 46 65 | in.${CACHE_LIST}.do.....echo."Fe |
| 1e0a0 | 74 63 68 69 6e 67 20 2e 2f 74 69 6e 79 2f 24 7b 66 69 6c 65 7d 20 69 6e 74 6f 20 24 7b 50 52 4f | tching../tiny/${file}.into.${PRO |
| 1e0c0 | 58 59 5f 44 49 52 7d 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 78 79 22 0a 20 20 20 20 64 6f 77 | XY_DIR}.using.the.proxy".....dow |
| 1e0e0 | 6e 6c 6f 61 64 5f 70 72 6f 78 79 20 24 50 52 4f 58 59 5f 44 49 52 20 24 7b 66 69 6c 65 7d 20 22 | nload_proxy.$PROXY_DIR.${file}." |
| 1e100 | 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 24 7b 74 69 6e 79 5f 70 6f 72 74 7d 2f 24 7b | http://localhost:${tiny_port}/${ |
| 1e120 | 66 69 6c 65 7d 22 20 22 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 24 7b 70 72 6f 78 79 | file}"."http://localhost:${proxy |
| 1e140 | 5f 70 6f 72 74 7d 22 0a 64 6f 6e 65 0a 0a 23 20 4b 69 6c 6c 20 54 69 6e 79 0a 65 63 68 6f 20 22 | _port}".done..#.Kill.Tiny.echo." |
| 1e160 | 4b 69 6c 6c 69 6e 67 20 74 69 6e 79 22 0a 6b 69 6c 6c 20 24 74 69 6e 79 5f 70 69 64 20 32 3e 20 | Killing.tiny".kill.$tiny_pid.2>. |
| 1e180 | 2f 64 65 76 2f 6e 75 6c 6c 0a 77 61 69 74 20 24 74 69 6e 79 5f 70 69 64 20 32 3e 20 2f 64 65 76 | /dev/null.wait.$tiny_pid.2>./dev |
| 1e1a0 | 2f 6e 75 6c 6c 0a 0a 23 20 4e 6f 77 20 74 72 79 20 74 6f 20 66 65 74 63 68 20 61 20 63 61 63 68 | /null..#.Now.try.to.fetch.a.cach |
| 1e1c0 | 65 64 20 63 6f 70 79 20 6f 66 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 65 74 63 68 65 64 20 66 69 | ed.copy.of.one.of.the.fetched.fi |
| 1e1e0 | 6c 65 73 2e 0a 65 63 68 6f 20 22 46 65 74 63 68 69 6e 67 20 61 20 63 61 63 68 65 64 20 63 6f 70 | les..echo."Fetching.a.cached.cop |
| 1e200 | 79 20 6f 66 20 2e 2f 74 69 6e 79 2f 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 20 69 6e 74 6f 20 24 | y.of../tiny/${FETCH_FILE}.into.$ |
| 1e220 | 7b 4e 4f 50 52 4f 58 59 5f 44 49 52 7d 22 0a 64 6f 77 6e 6c 6f 61 64 5f 70 72 6f 78 79 20 24 4e | {NOPROXY_DIR}".download_proxy.$N |
| 1e240 | 4f 50 52 4f 58 59 5f 44 49 52 20 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 20 22 68 74 74 70 3a 2f | OPROXY_DIR.${FETCH_FILE}."http:/ |
| 1e260 | 2f 6c 6f 63 61 6c 68 6f 73 74 3a 24 7b 74 69 6e 79 5f 70 6f 72 74 7d 2f 24 7b 46 45 54 43 48 5f | /localhost:${tiny_port}/${FETCH_ |
| 1e280 | 46 49 4c 45 7d 22 20 22 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 24 7b 70 72 6f 78 79 | FILE}"."http://localhost:${proxy |
| 1e2a0 | 5f 70 6f 72 74 7d 22 0a 0a 23 20 53 65 65 20 69 66 20 74 68 65 20 70 72 6f 78 79 20 66 65 74 63 | _port}"..#.See.if.the.proxy.fetc |
| 1e2c0 | 68 20 73 75 63 63 65 65 64 65 64 20 62 79 20 63 6f 6d 70 61 72 69 6e 67 20 69 74 20 77 69 74 68 | h.succeeded.by.comparing.it.with |
| 1e2e0 | 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 0a 23 20 66 69 6c 65 20 69 6e 20 74 68 65 20 74 69 6e 79 | .the.original.#.file.in.the.tiny |
| 1e300 | 20 64 69 72 65 63 74 6f 72 79 0a 64 69 66 66 20 2d 71 20 2e 2f 74 69 6e 79 2f 24 7b 46 45 54 43 | .directory.diff.-q../tiny/${FETC |
| 1e320 | 48 5f 46 49 4c 45 7d 20 24 7b 4e 4f 50 52 4f 58 59 5f 44 49 52 7d 2f 24 7b 46 45 54 43 48 5f 46 | H_FILE}.${NOPROXY_DIR}/${FETCH_F |
| 1e340 | 49 4c 45 7d 20 20 26 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a 69 66 20 5b 20 24 3f 20 2d 65 71 20 30 | ILE}..&>./dev/null.if.[.$?.-eq.0 |
| 1e360 | 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 63 61 63 68 65 53 63 6f 72 65 3d 24 7b 4d 41 58 5f 43 41 | .];.then.....cacheScore=${MAX_CA |
| 1e380 | 43 48 45 7d 0a 20 20 20 20 65 63 68 6f 20 22 53 75 63 63 65 73 73 3a 20 57 61 73 20 61 62 6c 65 | CHE}.....echo."Success:.Was.able |
| 1e3a0 | 20 74 6f 20 66 65 74 63 68 20 74 69 6e 79 2f 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 20 66 72 6f | .to.fetch.tiny/${FETCH_FILE}.fro |
| 1e3c0 | 6d 20 74 68 65 20 63 61 63 68 65 2e 22 0a 65 6c 73 65 0a 20 20 20 20 63 61 63 68 65 53 63 6f 72 | m.the.cache.".else.....cacheScor |
| 1e3e0 | 65 3d 30 0a 20 20 20 20 65 63 68 6f 20 22 46 61 69 6c 75 72 65 3a 20 57 61 73 20 6e 6f 74 20 61 | e=0.....echo."Failure:.Was.not.a |
| 1e400 | 62 6c 65 20 74 6f 20 66 65 74 63 68 20 74 69 6e 79 2f 24 7b 46 45 54 43 48 5f 46 49 4c 45 7d 20 | ble.to.fetch.tiny/${FETCH_FILE}. |
| 1e420 | 66 72 6f 6d 20 74 68 65 20 70 72 6f 78 79 20 63 61 63 68 65 2e 22 0a 66 69 0a 0a 23 20 4b 69 6c | from.the.proxy.cache.".fi..#.Kil |
| 1e440 | 6c 20 74 68 65 20 70 72 6f 78 79 0a 65 63 68 6f 20 22 4b 69 6c 6c 69 6e 67 20 70 72 6f 78 79 22 | l.the.proxy.echo."Killing.proxy" |
| 1e460 | 0a 6b 69 6c 6c 20 24 70 72 6f 78 79 5f 70 69 64 20 32 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a 77 61 | .kill.$proxy_pid.2>./dev/null.wa |
| 1e480 | 69 74 20 24 70 72 6f 78 79 5f 70 69 64 20 32 3e 20 2f 64 65 76 2f 6e 75 6c 6c 0a 0a 65 63 68 6f | it.$proxy_pid.2>./dev/null..echo |
| 1e4a0 | 20 22 63 61 63 68 65 53 63 6f 72 65 3a 20 24 63 61 63 68 65 53 63 6f 72 65 2f 24 7b 4d 41 58 5f | ."cacheScore:.$cacheScore/${MAX_ |
| 1e4c0 | 43 41 43 48 45 7d 22 0a 0a 23 20 45 6d 69 74 20 74 68 65 20 74 6f 74 61 6c 20 73 63 6f 72 65 0a | CACHE}"..#.Emit.the.total.score. |
| 1e4e0 | 74 6f 74 61 6c 53 63 6f 72 65 3d 60 65 78 70 72 20 24 7b 62 61 73 69 63 53 63 6f 72 65 7d 20 2b | totalScore=`expr.${basicScore}.+ |
| 1e500 | 20 24 7b 63 61 63 68 65 53 63 6f 72 65 7d 20 2b 20 24 7b 63 6f 6e 63 75 72 72 65 6e 63 79 53 63 | .${cacheScore}.+.${concurrencySc |
| 1e520 | 6f 72 65 7d 60 0a 6d 61 78 53 63 6f 72 65 3d 60 65 78 70 72 20 24 7b 4d 41 58 5f 42 41 53 49 43 | ore}`.maxScore=`expr.${MAX_BASIC |
| 1e540 | 7d 20 2b 20 24 7b 4d 41 58 5f 43 41 43 48 45 7d 20 2b 20 24 7b 4d 41 58 5f 43 4f 4e 43 55 52 52 | }.+.${MAX_CACHE}.+.${MAX_CONCURR |
| 1e560 | 45 4e 43 59 7d 60 0a 65 63 68 6f 20 22 22 0a 65 63 68 6f 20 22 74 6f 74 61 6c 53 63 6f 72 65 3a | ENCY}`.echo."".echo."totalScore: |
| 1e580 | 20 24 7b 74 6f 74 61 6c 53 63 6f 72 65 7d 2f 24 7b 6d 61 78 53 63 6f 72 65 7d 22 0a 65 78 69 74 | .${totalScore}/${maxScore}".exit |
| 1e5a0 | 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e600 | 70 72 6f 78 79 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 6e 6f 70 2d 73 65 72 76 65 72 2e 70 79 00 00 | proxylab-handout/nop-server.py.. |
| 1e620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e660 | 00 00 00 00 30 30 30 30 37 30 30 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 | ....0000700.0006626.0000144.0000 |
| 1e680 | 30 30 30 31 30 31 36 00 31 32 32 34 34 37 30 34 30 36 33 00 30 31 35 30 32 36 00 20 30 00 00 00 | 0001016.12244704063.015026..0... |
| 1e6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e700 | 00 75 73 74 61 72 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar.......................... |
| 1e720 | 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........users.................. |
| 1e740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e800 | 23 21 2f 75 73 72 2f 62 69 6e 2f 70 79 74 68 6f 6e 0a 0a 23 20 6e 6f 70 2d 73 65 72 76 65 72 2e | #!/usr/bin/python..#.nop-server. |
| 1e820 | 70 79 20 2d 20 54 68 69 73 20 69 73 20 61 20 73 65 72 76 65 72 20 74 68 61 74 20 77 65 20 75 73 | py.-.This.is.a.server.that.we.us |
| 1e840 | 65 20 74 6f 20 63 72 65 61 74 65 20 68 65 61 64 2d 6f 66 2d 6c 69 6e 65 0a 23 20 20 20 20 20 20 | e.to.create.head-of-line.#...... |
| 1e860 | 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 63 6f 6e 63 | ...........blocking.for.the.conc |
| 1e880 | 75 72 72 65 6e 63 79 20 74 65 73 74 2e 20 49 74 20 61 63 63 65 70 74 73 20 61 0a 23 20 20 20 20 | urrency.test..It.accepts.a.#.... |
| 1e8a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 | .............connection,.and.the |
| 1e8c0 | 6e 20 73 70 69 6e 73 20 66 6f 72 65 76 65 72 2e 0a 23 0a 23 20 75 73 61 67 65 3a 20 6e 6f 70 2d | n.spins.forever..#.#.usage:.nop- |
| 1e8e0 | 73 65 72 76 65 72 2e 70 79 20 3c 70 6f 72 74 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | server.py.<port>................ |
| 1e900 | 0a 23 0a 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 0a 69 6d 70 6f 72 74 20 73 79 73 0a 0a 23 63 72 | .#.import.socket.import.sys..#cr |
| 1e920 | 65 61 74 65 20 61 6e 20 49 4e 45 54 2c 20 53 54 52 45 41 4d 69 6e 67 20 73 6f 63 6b 65 74 0a 73 | eate.an.INET,.STREAMing.socket.s |
| 1e940 | 65 72 76 65 72 73 6f 63 6b 65 74 20 3d 20 73 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 73 6f 63 6b | erversocket.=.socket.socket(sock |
| 1e960 | 65 74 2e 41 46 5f 49 4e 45 54 2c 20 73 6f 63 6b 65 74 2e 53 4f 43 4b 5f 53 54 52 45 41 4d 29 0a | et.AF_INET,.socket.SOCK_STREAM). |
| 1e980 | 73 65 72 76 65 72 73 6f 63 6b 65 74 2e 62 69 6e 64 28 28 27 27 2c 20 69 6e 74 28 73 79 73 2e 61 | serversocket.bind(('',.int(sys.a |
| 1e9a0 | 72 67 76 5b 31 5d 29 29 29 0a 73 65 72 76 65 72 73 6f 63 6b 65 74 2e 6c 69 73 74 65 6e 28 35 29 | rgv[1]))).serversocket.listen(5) |
| 1e9c0 | 0a 0a 77 68 69 6c 65 20 31 3a 0a 20 20 63 68 61 6e 6e 65 6c 2c 20 64 65 74 61 69 6c 73 20 3d 20 | ..while.1:...channel,.details.=. |
| 1e9e0 | 73 65 72 76 65 72 73 6f 63 6b 65 74 2e 61 63 63 65 70 74 28 29 0a 20 20 77 68 69 6c 65 20 31 3a | serversocket.accept()...while.1: |
| 1ea00 | 0a 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .....continue................... |
| 1ea20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ea40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ea60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ea80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eaa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eb00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eb20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eb40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eb60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eb80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ebc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ebe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ec00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ec20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ec40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ec60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ec80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ecc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ece0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ed00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ed20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ed40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ed60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ed80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eda0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1edc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ede0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ee00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ee20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ee40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ee60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ee80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1eee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ef00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ef20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ef40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ef60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ef80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1efa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1efc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1efe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f0a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f0c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f0e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f1a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f1c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f1e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f2a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f2c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f2e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f3a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f3c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f3e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f4a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f4c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f4e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f5a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f9a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f9c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f9e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fa00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fa20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fa40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fa60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fa80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1faa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fb00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fb20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fb40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fb60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fb80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fbc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fbe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fc00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fc20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fc40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fc60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fc80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fcc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fd00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fd20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fd40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fd60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fd80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fda0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fdc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fde0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fe00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fe20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fe40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fe60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fe80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ff00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ff20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ff40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ff60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ff80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ffa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ffc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ffe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 200a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 200c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 200e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 201a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 201c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 201e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 202a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 202c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 202e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 203a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 203c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 203e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 204a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 204c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 204e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 205a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 205c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 205e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 206a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 206c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 206e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 207a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 207c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 207e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |