~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to lib/zlib/examples/gzlog.h

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* gzlog.h
 
2
  Copyright (C) 2004 Mark Adler, all rights reserved
 
3
  version 1.0, 26 Nov 2004
 
4
 
 
5
  This software is provided 'as-is', without any express or implied
 
6
  warranty.  In no event will the author be held liable for any damages
 
7
  arising from the use of this software.
 
8
 
 
9
  Permission is granted to anyone to use this software for any purpose,
 
10
  including commercial applications, and to alter it and redistribute it
 
11
  freely, subject to the following restrictions:
 
12
 
 
13
  1. The origin of this software must not be misrepresented; you must not
 
14
     claim that you wrote the original software. If you use this software
 
15
     in a product, an acknowledgment in the product documentation would be
 
16
     appreciated but is not required.
 
17
  2. Altered source versions must be plainly marked as such, and must not be
 
18
     misrepresented as being the original software.
 
19
  3. This notice may not be removed or altered from any source distribution.
 
20
 
 
21
  Mark Adler    madler@alumni.caltech.edu
 
22
 */
 
23
 
 
24
/*
 
25
   The gzlog object allows writing short messages to a gzipped log file,
 
26
   opening the log file locked for small bursts, and then closing it.  The log
 
27
   object works by appending stored data to the gzip file until 1 MB has been
 
28
   accumulated.  At that time, the stored data is compressed, and replaces the
 
29
   uncompressed data in the file.  The log file is truncated to its new size at
 
30
   that time.  After closing, the log file is always valid gzip file that can
 
31
   decompressed to recover what was written.
 
32
 
 
33
   A gzip header "extra" field contains two file offsets for appending.  The
 
34
   first points to just after the last compressed data.  The second points to
 
35
   the last stored block in the deflate stream, which is empty.  All of the
 
36
   data between those pointers is uncompressed.
 
37
 */
 
38
 
 
39
/* Open a gzlog object, creating the log file if it does not exist.  Return
 
40
   NULL on error.  Note that gzlog_open() could take a long time to return if
 
41
   there is difficulty in locking the file. */
 
42
void *gzlog_open(char *path);
 
43
 
 
44
/* Write to a gzlog object.  Return non-zero on error.  This function will
 
45
   simply write data to the file uncompressed.  Compression of the data
 
46
   will not occur until gzlog_close() is called.  It is expected that
 
47
   gzlog_write() is used for a short message, and then gzlog_close() is
 
48
   called.  If a large amount of data is to be written, then the application
 
49
   should write no more than 1 MB at a time with gzlog_write() before
 
50
   calling gzlog_close() and then gzlog_open() again. */
 
51
int gzlog_write(void *log, char *data, size_t len);
 
52
 
 
53
/* Close a gzlog object.  Return non-zero on error.  The log file is locked
 
54
   until this function is called.  This function will compress stored data
 
55
   at the end of the gzip file if at least 1 MB has been accumulated.  Note
 
56
   that the file will not be a valid gzip file until this function completes.
 
57
 */
 
58
int gzlog_close(void *log);