source: branches/branch-1-0/include/helpers/eah.h@ 256

Last change on this file since 256 was 113, checked in by umoeller, 24 years ago

Misc updates.

  • Property svn:eol-style set to CRLF
  • Property svn:keywords set to Author Date Id Revision
File size: 8.0 KB
Line 
1
2/*
3 *@@sourcefile eah.h:
4 * header file for eah.c. See remarks there.
5 *
6 * Note: Version numbering in this file relates to XWorkplace version
7 * numbering.
8 *
9 *@@include #include <os2.h>
10 *@@include #include "helpers\eah.h"
11 */
12
13/*
14 * Most of the code in this file dealing with Extended Attributes
15 * is based on code (w) by Chris Hanson (cph@zurich.ai.mit.edu).
16 * Copyright (c) 1995 Massachusetts Institute of Technology.
17 * The original code is available as EALIB.ZIP at Hobbes.
18 *
19 * From that code is the following copyright notice:
20 *
21 * This material was developed by the Scheme project at the Massachusetts
22 * Institute of Technology, Department of Electrical Engineering and
23 * Computer Science. Permission to copy this software, to redistribute
24 * it, and to use it for any purpose is granted, subject to the following
25 * restrictions and understandings.
26 *
27 * 1. Any copy made of this software must include this copyright notice
28 * in full.
29 *
30 * 2. Users of this software agree to make their best efforts (a) to
31 * return to the MIT Scheme project any improvements or extensions that
32 * they make, so that these may be included in future releases; and (b)
33 * to inform MIT of noteworthy uses of this software.
34 *
35 * 3. All materials developed as a consequence of the use of this
36 * software shall duly acknowledge such use, in accordance with the usual
37 * standards of acknowledging credit in academic research.
38 *
39 * 4. MIT has made no warrantee or representation that the operation of
40 * this software will be error-free, and MIT is under no obligation to
41 * provide any services, by way of maintenance, update, or otherwise.
42 *
43 * 5. In conjunction with products arising from the use of this material,
44 * there shall be no use of the name of the Massachusetts Institute of
45 * Technology nor of any adaptation thereof in any advertising,
46 * promotional, or sales literature without prior written consent from
47 * MIT in each case.
48 *
49 * This file Copyright (C) 1997-2000 Ulrich M”ller,
50 * Massachusetts Institute of Technology.
51 * This file is part of the "XWorkplace helpers" source package.
52 * This is free software; you can redistribute it and/or modify
53 * it under the terms of the GNU General Public License as published
54 * by the Free Software Foundation, in version 2 as it comes in the
55 * "COPYING" file of the XWorkplace main distribution.
56 * This program is distributed in the hope that it will be useful,
57 * but WITHOUT ANY WARRANTY; without even the implied warranty of
58 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
59 * GNU General Public License for more details.
60 */
61
62#if __cplusplus
63extern "C" {
64#endif
65
66#ifndef EAS_HEADER_INCLUDED
67 #define EAS_HEADER_INCLUDED
68
69 /*
70 *@@ EABINDING:
71 * generic data structure used for all
72 * the EA functions.
73 *
74 * usValueLength gives you the length of *pszValue,
75 * which is _not_ necessarily zero-terminated.
76 *
77 * The format of pszValue depends on the EA type.
78 * This pointer points to the "raw" EA data.
79 *
80 * The first USHORT gives you the EA type (EAT_* flag),
81 * on which the other bytes depend.
82 *
83 * Most EA types have their size in the second USHORT.
84 * All EA formats are described in detail in CPREF.
85 */
86
87 typedef struct _EABINDING
88 {
89 BYTE bFlags;
90 // EA flags, as in FEA2.fEA. This is either
91 // FFEA_NEEDEA (for critical EAs) or 0.
92 BYTE bNameLength; // length of (*pszName)
93 USHORT usValueLength; // length of (*pszValue)
94 PSZ pszName; // EA name (e.g. ".CLASSINFO")
95 PSZ pszValue; // complete raw EA contents.
96 // The first USHORT gives you the type,
97 // the second USHORT normally the size.
98 } EABINDING, *PEABINDING;
99
100 /*
101 *@@ EALIST:
102 * list structure returned by eaPathReadAll and
103 * eaHFileReadAll.
104 */
105
106 typedef struct _EALIST
107 {
108 PEABINDING peab;
109 struct _EALIST *next;
110 } EALIST, *PEALIST;
111
112 void eaFreeBinding(PEABINDING peab);
113
114 void eaFreeList(PEALIST list);
115
116 /* ******************************************************************
117 *
118 * Read-EA functions
119 *
120 ********************************************************************/
121
122 ULONG eaHFileQueryTotalSize(HFILE hFile);
123
124 ULONG eaPathQueryTotalSize(const char *pcszPath);
125
126 PEALIST eaHFileReadAll(HFILE hfile);
127
128 PEALIST eaPathReadAll(const char *pcszPath);
129
130 PEABINDING eaHFileReadOneByIndex(HFILE hfile, ULONG index);
131
132 PEABINDING eaPathReadOneByIndex(const char *pcszPath, ULONG index);
133
134 PEABINDING eaHFileReadOneByName(HFILE hfile, const char *pcszEAName);
135
136 PEABINDING eaPathReadOneByName(const char *pcszPath, const char *pcszEAName);
137
138 /* ******************************************************************
139 *
140 * Write-EA functions
141 *
142 ********************************************************************/
143
144 APIRET eaHFileWriteAll(HFILE hfile, PEALIST list);
145
146 APIRET eaPathWriteAll(const char *pcszPath, PEALIST list);
147
148 APIRET eaHFileWriteOne(HFILE hfile, PEABINDING peab);
149
150 APIRET eaPathWriteOne(const char *pcszPath, PEABINDING peab);
151
152 APIRET eaPathDeleteOne(const char *pcszPath, const char *pcszEAName);
153
154 /********************************************************************
155 *
156 * Translation funcs
157 *
158 ********************************************************************/
159
160 USHORT eaQueryEAType(PEABINDING peab);
161
162 PSZ eaCreatePSZFromBinding(PEABINDING peab);
163
164 PEABINDING eaCreateBindingFromPSZ(const char *pcszEAName,
165 const char *pcszInput);
166
167 USHORT eaQueryMVCount(PEABINDING peab,
168 PUSHORT pusCodepage,
169 PUSHORT pusEAType);
170
171 PSZ eaQueryMVItem(PEABINDING peab,
172 USHORT usIndex,
173 PUSHORT pusEAType,
174 PUSHORT pusCodepage,
175 PUSHORT pusDataLength);
176
177 PSZ eaCreatePSZFromMVBinding(PEABINDING peab,
178 const char *pcszSeparator,
179 PUSHORT pusCodepage);
180
181 PEABINDING eaCreateMVBindingFromPSZ(const char *pcszEAName,
182 const char *pcszInput,
183 const char *pcszSeparator,
184 USHORT usCodepage);
185
186 /* ******************************************************************
187 *
188 * Direct plain-string EA handling
189 *
190 ********************************************************************/
191
192 typedef struct _EAMVMT
193 {
194 USHORT usType;
195 USHORT usCodepage;
196 USHORT usEntries;
197 USHORT usEntryType;
198 USHORT usEntryLen;
199 CHAR chEntry[1];
200 } EAMVMT, *PEAMVMT;
201
202 typedef struct _EASVST
203 {
204 USHORT usType;
205 USHORT usEntryLen;
206 CHAR chEntry[1];
207 } EASVST, *PEASVST;
208
209 #define MAX(a,b) (a > b ? a : b)
210 #define MAX(a,b) (a > b ? a : b)
211 #define NEXTSTR(s) (s+strlen(s) + 1)
212
213 APIRET eahWriteStringEA(HFILE hfile,
214 PSZ pszEaName,
215 PSZ pszEaValue);
216
217 APIRET eahReadStringEA(PSZ pszFileName,
218 PSZ pszEaName,
219 PSZ pszBuffer,
220 PULONG pulBuflen);
221#endif
222
223#if __cplusplus
224}
225#endif
226
Note: See TracBrowser for help on using the repository browser.