1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
5<title>Teo</title>
6<link rel="stylesheet" type="text/css" href="doc.css">
7</head>
8<body>
9<table width="100%"><tr><td>
10
11<h3>LibSAP</h3>
12
13<p>LibSAP est une librarie de manipulation des archives SAP &eacute;crite en ANSI C. Elle fournit &agrave; la fois des routines de manipulation bas-niveau des archives SAP consid&eacute;r&eacute;es comme format physique (images de disquettes) et des routines de manipulation haut-niveau des archives SAP consid&eacute;r&eacute;es comme format logique (compatible avec le DOS BASIC Thomson).</p>
14
15<ul>
16<li><a href="#open_archive">Ouverture d'une archive SAP</a></li>
17<li><a href="#create_archive">Cr&eacute;ation d'une archive SAP</a></li>
18<li><a href="#close_archive">Fermeture d'une archive SAP</a></li>
19<li><a href="#fill_archive">Remplissage une archive SAP</a></li>
20<li><a href="#read_sector">Lecture d'un secteur SAP</a></li>
21<li><a href="#read_sectors">Lecture d'une s&eacute;rie de secteurs SAP</a></li>
22<li><a href="#write_sector">Ecriture d'un secteur SAP</a></li>
23<li><a href="#write_sectors">Ecriture d'une s&eacute;rie de secteurs SAP</a></li>
24<li><a href="#format_archive">Formatage d'une archive SAP</a></li>
25<li><a href="#list_archive">R�cup&eacute;ration d'un r�pertoire SAP</a></li>
26<li><a href="#add_file">Ajout d'un fichier &agrave; l'archive SAP</a></li>
27<li><a href="#delete_file">Effacement de fichier(s) de l'archive SAP</a></li>
28<li><a href="#extract_file">Extraction de fichier(s) de l'archive SAP</a></li>
29<li><a href="#read_informations">Lecture des informations de fichier</a></li>
30</ul>
31
32<h5>Ouverture d'une archive SAP<a name="open_archive"></a></h5>
33
34<p><b><i>sapID sap_OpenArchive(const char filename[], int *format);</i></b><br>
35<span style="padding-left:30px"><em>filename : nom de l'archive SAP</em></span><br>
36<span style="padding-left:30px"><em>format : retour du format de l'archive SAP (sap_FORMAT1 ou sap_FORMAT2)</em></span></p>
37
38<p>Retourne l'identificateur de l'archive SAP. En cas d'erreur, sap_ERROR est retourn&eacute; et sap_errno contient l'un des codes d'erreur suivants:<br>
39SAP_ETOOMANY : trop d'archives SAP sont ouvertes simultan&eacute;ment.<br>
40SAP_ENOENT : l'archive SAP sp&eacute;cifi&eacute;e n'existe pas.<br>
41SAP_EBADF : le fichier sp&eacute;cifi&eacute; n'est pas une archive SAP.</p>
42
43<h5>Cr&eacute;ation d'une archive SAP<a name="create_archive"></a></h5>
44
45<p><b><i>sapID sap_CreateArchive(const char filename[], int format);</i></b><br>
46<span style="padding-left:30px"><em>filename : nom de l'archive SAP</em></span><br>
47<span style="padding-left:30px"><em>format : format de l'archive SAP (sap_FORMAT1 ou sap_FORMAT2)</em></span></p>
48
49<p>Retourne l'identificateur de l'archive SAP. En cas d'erreur, SAP_ERROR est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
50SAP_ETOOMANY : trop d'archives SAP sont ouvertes simultan&eacute;ment.<br>
51SAP_EPERM : impossible de cr&eacute;er le fichier sur le support d'enregistrement.</p>
52
53<h5>Fermeture d'une archive SAP<a name="close_archive"></a></h5>
54
55<p><b><i>int sap_CloseArchive(sapID id);</i></b><br>
56<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span></p>
57
58<p>Retourne SAP_OK. En cas d'erreur, SAP_ERROR est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
59SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.</p>
60
61<h5>Remplissage une archive SAP<a name="fill_archive"></a></h5>
62
63<p><b><i>int sap_FillArchive(sapID id, sapsector_t *sapsector);</i></b><br>
64<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
65<span style="padding-left:30px"><em>sapsector : pointeur sur la structure de secteur</em></span></p>
66
67<p>Cette routine remplie une archive cr&eacute;&eacute;e par sap_CreateArchive() secteur par secteur, en commen&ccedil;ant par le secteur 1 de la piste 0. A chaque appel le num&eacute;ro de secteur est incr&eacute;ment&eacute; de 1 et, si la piste courante devient pleine, la piste suivante est s&eacute;lectionn&eacute;e.<br>
68Retourne SAP_OK. En cas d'erreur, SAP_ERROR est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
69SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.<br>
70SAP_ENOSPC : l'archive SAP est pleine.</p>
71
72<h5>Lecture d'un secteur SAP<a name="read_sector"></a></h5>
73
74<p><b><i>int sap_ReadSector(sapID id, int track, int sect, sapsector_t *sapsector);</i></b><br>
75<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
76<span style="padding-left:30px"><em>track : num&eacute;ro de piste</em></span><br>
77<span style="padding-left:30px"><em>sect : num&eacute;ro de secteur</em></span><br>
78<span style="padding-left:30px"><em>sapsector : pointeur sur la structure de secteur</em></span></p>
79
80<p>Le r&eacute;sultat de la lecture est dans la structure d&eacute;sign&eacute;e par <em>'sapsector'</em>.<br>
81Retourne SAP_OK ou une combinaison des flags suivants:<br>
82SAP_NO_STD_FMT : le format du secteur est non standard.<br>
83SAP_PROTECTED : le secteur est prot&eacute;g&eacute; en &eacute;criture.<br>
84SAP_BAD_SECTOR : le secteur a de mauvais identificateurs (piste, secteur)<br>
85SAP_CRC_ERROR : erreur de CRC sur les donn&eacute;es du secteur.</p>
86
87<p>En cas d'erreur, SAP_ERROR est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
88SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.<br>
89SAP_EEMPTY : l'archive SAP est vide.
90SAP_EBUSY : l'archive SAP est en train d'&ecirc;tre remplie par sap_FillArchive()</p>
91
92<h5>Lecture d'une s&eacute;rie de secteurs SAP<a name="read_sectors"></a></h5>
93
94<p><b><i>int sap_ReadSectorEx(sapID id, int track, int sect, int nsects, unsigned char data[]);</i></b><br>
95<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
96<span style="padding-left:30px"><em>track : num&eacute;ro de piste de d&eacute;part</em></span><br>
97<span style="padding-left:30px"><em>sect : num&eacute;ro de secteur de d&eacute;part</em></span><br>
98<span style="padding-left:30px"><em>nsect : nombre de secteurs &agrave; lire</em></span><br>
99<span style="padding-left:30px"><em>data : pointeur sur le buffer de secteurs</em></span></p>
100
101<p>Retourne SAP_OK. En cas d'erreur, SAP_ERROR est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
102SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.<br>
103SAP_EEMPTY : l'archive SAP est vide.
104SAP_EBUSY : l'archive SAP est en train d'&ecirc;tre remplie par sap_FillArchive()</p>
105
106<h5>&Eacute;criture d'un secteur SAP<a name="write_sector"></a></h5>
107
108<p><b><i>int sap_WriteSector(sapID id, int track, int sect, sapsector_t *sapsector);</i></b><br>
109<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
110<span style="padding-left:30px"><em>track : num&eacute;ro de piste</em></span><br>
111<span style="padding-left:30px"><em>sect : num&eacute;ro de secteur</em></span><br>
112<span style="padding-left:30px"><em>sapsector : pointeur sur la structure de secteur</em></span></p>
113
114<p>Tous les champs du secteur doivent &ecirc;tre sp&eacute;cifi&eacute;s, except&eacute;s les deux champs relatifs au CRC qui seront calcul&eacute;s par la routine elle-m&ecirc;me.<br>
115Retourne SAP_OK. En cas d'erreur, SAP_ERROR est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
116SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.<br>
117SAP_EEMPTY : l'archive SAP est vide.
118SAP_EBUSY : l'archive SAP est en train d'&ecirc;tre remplie par sap_FillArchive()</p>
119
120<h5>&Eacute;criture d'une s&eacute;rie de secteurs SAP<a name="write_sectors"></a></h5>
121
122<p><b><i>int sap_WriteSectorEx(sapID id, int track, int sect, int nsects, const unsigned char data[]);</i></b><br>
123<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
124<span style="padding-left:30px"><em>track : num&eacute;ro de piste de d&eacute;part</em></span><br>
125<span style="padding-left:30px"><em>sect : num&eacute;ro de secteur de d&eacute;part</em></span><br>
126<span style="padding-left:30px"><em>nsect : nombre de secteurs &agrave; &eacute;crire</em></span><br>
127<span style="padding-left:30px"><em>data : pointeur sur le buffer de secteurs</em></span></p>
128
129<p>Retourne SAP_OK. En cas d'erreur, SAP_ERROR est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
130SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.<br>
131SAP_EEMPTY : l'archive SAP est vide.
132SAP_EBUSY : l'archive SAP est en train d'&ecirc;tre remplie par sap_FillArchive()</p>
133
134<h5>Formatage d'une archive SAP<a name="format_archive"></a></h5>
135
136<p><b><i>int sap_FormatArchive(sapID id, int capacity);</i></b><br>
137<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
138<span style="padding-left:30px"><em>capacity : sap_TRK80 (80 pistes) ou sap_TRK40 (40 pistes)</em></span><br></p>
139
140<p>Retourne SAP_OK. En cas d'erreur, SAP_ERROR est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
141SAP_EINVAL : le num&eacute;ro d'identification (sapID) ou le format est invalide.<br>
142SAP_EBUSY : l'archive SAP est en train d'&ecirc;tre remplie par sap_FillArchive()</p>
143
144<h5>R&eacute;cup&eacute;ration d'un r&eacute;pertoire SAP<a name="list_archive"></a></h5>
145
146<p><b><i>int sap_ListArchive(sapID id, char buffer[], int buffer_size);</i></b><br>
147<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
148<span style="padding-left:30px"><em>buffer : buffer de r&eacute;pertoire</em></span><br>
149<span style="padding-left:30px"><em>buffer_size : taille du buffer de r&eacute;pertoire</em></span></p>
150
151<p>Retourne le nombre de lignes de la liste. En cas d'erreur, 0 est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
152SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.<br>
153SAP_EEMPTY : l'archive SAP est vide.
154SAP_EBUSY : l'archive SAP est en train d'&ecirc;tre remplie par sap_FillArchive()</p>
155
156<h5>Ajout d'un fichier &agrave; l'archive SAP<a name="add_file"></a></h5>
157
158<p><b><i>int sap_AddFile(sapID id, const char filename[]);</i></b><br>
159<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
160<span style="padding-left:30px"><em>filename : nom du fichier &agrave; ajouter</em></span></p>
161
162<p>Retourne la taille du fichier en octets. En cas d'erreur, 0 est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
163SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.<br>
164SAP_EEMPTY : l'archive SAP est vide.
165SAP_EBUSY : l'archive SAP est en train d'&ecirc;tre remplie par sap_FillArchive()<br>
166SAP_ENOENT : le fichier n'existe pas.
167SAP_ENFILE : le fichier est vide.
168SAP_ENOSPC : le r&eacute;pertoire de l'archive SAP est plein.<br>
169SAP_EFBIG : le fichier est trop gros pour l'espace libre de l'archive SAP.</p>
170
171<h5>Effacement de fichier(s) de l'archive SAP<a name="delete_file"></a></h5>
172
173<p><b><i>int sap_DeleteFile(sapID id, const char pattern[]);</i></b><br>
174<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
175<span style="padding-left:30px"><em>pattern : pattern des fichiers &agrave; effacer ('*' et '?' sont support&eacute;s)</em></span><br></p>
176
177<p>Retourne la taille du (des) fichier(s) en octets. En cas d'erreur, 0 est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
178SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.<br>
179SAP_EEMPTY : l'archive SAP est vide.
180SAP_EBUSY : l'archive SAP est en train d'&ecirc;tre remplie par sap_FillArchive()<br>
181SAP_ENOENT : le fichier n'existe pas dans l'archive SAP (erreur non valide lorsque pattern contient au moins une wilcard).</p>
182
183<h5>Extraction de fichier(s) de l'archive SAP<a name="extract_file"></a></h5>
184
185<p><b><i>int sap_ExtractFile(sapID id, const char pattern[]);</i></b><br>
186<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
187<span style="padding-left:30px"><em>pattern : pattern des fichiers &agrave; extraire ('*' et '?' sont support&eacute;s)</em></span></p>
188
189<p>Retourne la taille du (des) fichier(s) en octets. En cas d'erreur, 0 est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
190SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.<br>
191SAP_EEMPTY : l'archive SAP est vide.
192SAP_EBUSY : l'archive SAP est en train d'&ecirc;tre remplie par sap_FillArchive()<br>
193SAP_ENOENT : le fichier n'existe pas dans l'archive SAP (erreur non valide lorsque 'pattern' contient au moins une wilcard).
194SAP_EPERM : impossible d'&eacute;crire le ou les fichiers sur le support.</p>
195
196<h5>Lecture des informations de fichier<a name="read_informations"></a></h5>
197
198<p><b><i>int sap_GetFileInfo(sapID id, const char filename[], sapfileinfo_t *info);</i></b><br>
199<span style="padding-left:30px"><em>id : identificateur de l'archive SAP</em></span><br>
200<span style="padding-left:30px"><em>filename : nom du fichier &agrave; examiner</em></span><br>
201<span style="padding-left:30px"><em>info : pointeur sur la structure d'information</em></span></p>
202
203<p>Retourne SAP_OK. En cas d'erreur, SAP_ERROR est retourn&eacute; et 'sap_errno' contient l'un des codes d'erreur suivants:<br>
204SAP_EINVAL : le num&eacute;ro d'identification (sapID) est invalide.<br>
205SAP_EEMPTY : l'archive SAP est vide.
206SAP_EBUSY : l'archive SAP est en train d'&ecirc;tre remplie par sap_FillArchive()<br>
207SAP_ENOENT : le fichier n'existe pas dans l'archive SAP.</p>
208</td></tr></table>
209</body>
210</html>
211