<!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>