Null set implemented.
[idzebra-moved-to-github.git] / rset / rsnull.c
1 /*
2  * Copyright (C) 1994-1995, Index Data I/S 
3  * All rights reserved.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: rsnull.c,v $
7  * Revision 1.1  1995-09-06 10:35:44  adam
8  * Null set implemented.
9  *
10  */
11
12 #include <stdio.h>
13 #include <rsnull.h>
14 #include <alexutil.h>
15
16 static rset_control *r_create(const struct rset_control *sel, void *parms);
17 static int r_open (rset_control *ct, int wflag);
18 static void r_close (rset_control *ct);
19 static void r_delete (rset_control *ct);
20 static void r_rewind (rset_control *ct);
21 static int r_count (rset_control *ct);
22 static int r_read (rset_control *ct, void *buf);
23 static int r_write (rset_control *ct, const void *buf);
24
25 static const rset_control control = 
26 {
27     "NULL set type",
28     0,
29     r_create,
30     r_open,
31     r_close,
32     r_delete,
33     r_rewind,
34     r_count,
35     r_read,
36     r_write
37 };
38
39 const rset_control *rset_kind_null = &control;
40
41 static rset_control *r_create(const struct rset_control *sel, void *parms)
42 {
43     rset_control *newct;
44
45     logf (LOG_DEBUG, "rsnull_create(%s)", sel->desc);
46     newct = xmalloc(sizeof(*newct));
47     memcpy(newct, sel, sizeof(*sel));
48     return newct;
49 }
50
51 static int r_open(rset_control *ct, int wflag)
52 {
53     if (wflag)
54     {
55         logf (LOG_FATAL, "NULL set type is read-only");
56         return -1;
57     }
58     return 0;
59 }
60
61 static void r_close(rset_control *ct)
62 {
63     /* NOP */
64 }
65
66 static void r_delete(rset_control *ct)
67 {
68     xfree(ct);
69 }
70
71 static void r_rewind(rset_control *ct)
72 {
73     logf (LOG_DEBUG, "rsnull_rewind");
74 }
75
76 static int r_count (rset_control *ct)
77 {
78     return 0;
79 }
80
81 static int r_read (rset_control *ct, void *buf)
82 {
83     return 0;
84 }
85
86 static int r_write (rset_control *ct, const void *buf)
87 {
88     logf (LOG_FATAL, "NULL set type is read-only");
89     return -1;
90 }