1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>nasb.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.15 -->
<center>
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </center>
<hr><h1>nasb.cpp</h1><div class="fragment"><pre>00001
00002
00003 <font class="preprocessor">#include <ctype.h></font>
00004 <font class="preprocessor">#include <stdio.h></font>
00005 <font class="preprocessor">#include <fcntl.h></font>
00006 <font class="preprocessor">#include <errno.h></font>
00007
00008 <font class="preprocessor">#ifndef __GNUC__</font>
00009 <font class="preprocessor"></font><font class="preprocessor">#include <io.h></font>
00010 <font class="preprocessor">#else</font>
00011 <font class="preprocessor"></font><font class="preprocessor">#include <unistd.h></font>
00012 <font class="preprocessor">#endif</font>
00013 <font class="preprocessor"></font>
00014 <font class="preprocessor">#include <swcomprs.h></font>
00015
00016 <font class="keyword">class </font>FileCompress: <font class="keyword">public</font> SWCompress {
00017 <font class="keywordtype">int</font> ifd;
00018 <font class="keywordtype">int</font> ofd;
00019 <font class="keywordtype">int</font> ufd;
00020 <font class="keywordtype">int</font> zfd;
00021 <font class="keyword">public</font>:
00022 FileCompress(<font class="keywordtype">char</font> *);
00023 ~FileCompress();
00024 <font class="keywordtype">int</font> GetChars(<font class="keywordtype">char</font> *, <font class="keywordtype">int</font> len);
00025 <font class="keywordtype">int</font> SendChars(<font class="keywordtype">char</font> *, <font class="keywordtype">int</font> len);
00026 <font class="keywordtype">void</font> Encode();
00027 <font class="keywordtype">void</font> Decode();
00028 };
00029
00030
00031 FileCompress::FileCompress(<font class="keywordtype">char</font> *fname)
00032 {
00033 <font class="keywordtype">char</font> buf[256];
00034
00035 <font class="preprocessor">#ifndef O_BINARY</font>
00036 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0</font>
00037 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00038 <font class="preprocessor"></font>
00039 ufd = open(fname, O_RDWR|O_CREAT|O_BINARY);
00040
00041 sprintf(buf, <font class="stringliteral">"%s.zzz"</font>, fname);
00042 zfd = open(buf, O_RDWR|O_CREAT|O_BINARY);
00043 }
00044
00045
00046 FileCompress::~FileCompress(<font class="keywordtype">char</font> *fname)
00047 {
00048 close(ufd);
00049 close(zfd);
00050 }
00051
00052
00053 <font class="keywordtype">int</font> FileCompress::GetChars(<font class="keywordtype">char</font> *buf, <font class="keywordtype">int</font> len)
00054 {
00055 <font class="keywordflow">return</font> read(ifd, buf, len);
00056 }
00057
00058
00059 <font class="keywordtype">int</font> FileCompress::SendChars(<font class="keywordtype">char</font> *buf, <font class="keywordtype">int</font> len)
00060 {
00061 <font class="keywordflow">return</font> write(ofd, buf, len);
00062 }
00063
00064
00065 <font class="keywordtype">void</font> FileCompress::Encode()
00066 {
00067 ifd = ufd;
00068 ofd = zfd;
00069
00070 SWCompress::Encode();
00071 }
00072
00073
00074 <font class="keywordtype">void</font> FileCompress::Decode()
00075 {
00076 ifd = zfd;
00077 ofd = ufd;
00078
00079 SWCompress::Decode();
00080 }
00081
00082
00083 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
00084 {
00085 <font class="keywordtype">int</font> decomp = 0;
00086 SWCompress *fobj;
00087
00088 <font class="keywordflow">if</font> (argc != 2) {
00089 fprintf(stderr, <font class="stringliteral">"usage: %s <filename|filename.zzz>\n"</font>, argv[0]);
00090 exit(1);
00091 }
00092
00093 <font class="keywordflow">if</font> (strlen(argv[1]) > 4) {
00094 <font class="keywordflow">if</font> (!strcmp(&argv[1][strlen(argv[1])-4], <font class="stringliteral">".zzz"</font>)) {
00095 argv[1][strlen(argv[1])-4] = 0;
00096 decomp = 1;
00097 }
00098 }
00099
00100 fobj = <font class="keyword">new</font> FileCompress(argv[1]);
00101
00102 <font class="keywordflow">if</font> (decomp)
00103 fobj->Decode();
00104 <font class="keywordflow">else</font> fobj->Encode();
00105
00106 <font class="keyword">delete</font> fobj;
00107 }
</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.2.15 </small></address>
</body>
</html>
|