source: vital-to8-sdk/sap/libsap.txt

Last change on this file was 1, checked in by svn, 5 years ago

Import initial

File size: 9.3 KB
Line 
1LibSAP est une librarie de manipulation des archives SAP écrite en ANSI C.
2Elle fournit à la fois des routines de manipulation bas-niveau des archives
3SAP considérées comme format physique (images de disquettes) et des routines
4de manipulation haut-niveau des archives SAP considérées comme format
5logique (compatible avec le DOS BASIC Thomson).
6
7
8
91. Routines de manipulation du format physique:
10
11sapID sap_OpenArchive(const char filename[], int *format);
12   Cette routine ouvre l'archive SAP dont le nom est spécifié par 'filename' et
13  retourne le numéro d'identification (sapID) attaché à cette archive à partir
14  de cet instant. Ce numéro d'identification sera passé aux autres routines de
15  la librairie pour désigner l'archive SAP sur laquelle elle devront agir.
16   Le paramètre 'format' retourne le format de l'archive SAP, qui peut-être
17  SAP_FORMAT1 ou SAP_FORMAT2.
18   Si une erreur survient, la routine retourne SAP_ERROR et stocke le numéro
19  d'erreur dans la variable sap_errno:
20  SAP_ETOOMANY: trop d'archives SAP sont ouvertes simultanément.
21  SAP_ENOENT: l'archive SAP spécifiée n'existe pas.
22  SAP_EBADF: le fichier spécifié n'est pas une archive SAP.
23
24
25sapID sap_CreateArchive(const char filename[], int format);
26   Cette routine crée une archive SAP dont le nom est spécifié par 'filename'
27  et retourne le numéro d'identification (sapID) attaché à cette archive à
28  partir de cet instant. Ce numéro d'identification sera passé aux autres
29  routines de la librairie pour désigner l'archive SAP sur laquelle elle
30  devront agir.
31   Le paramètre 'format' spécifie le format de l'archive SAP, qui peut-être
32  SAP_FORMAT1 ou SAP_FORMAT2.
33   Si une erreur survient, la routine retourne SAP_ERROR et stocke le numéro
34  d'erreur dans la variable sap_errno:
35  SAP_ETOOMANY: trop d'archives SAP sont ouvertes simultanément.
36  SAP_EPERM: impossible de créer le fichier sur le support d'enregistrement.
37
38
39int sap_CloseArchive(sapID id);
40   Cette routine ferme une archive SAP ouverte par sap_OpenArchive() ou créée
41  par sap_CreateArchive() et retourne SAP_OK.
42   Si une erreur survient, la routine retourne SAP_ERROR et stocke le numéro
43  d'erreur dans la variable sap_errno:
44  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
45
46
47int sap_FillArchive(sapID id, sapsector_t *sapsector);
48   Cette routine remplie une archive créée par sap_CreateArchive() secteur
49  par secteur, en commençant par le secteur 1 de la piste 0. A chaque appel
50  le numéro de secteur est incrémenté de 1 et, si la piste courante devient
51  pleine, la piste suivante est sélectionnée. Retourne SAP_OK.
52   Si une erreur survient, la routine retourne SAP_ERROR et stocke le numéro
53  d'erreur dans la variable sap_errno:
54  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
55  SAP_ENOSPC: l'archive SAP est pleine.
56
57
58int sap_ReadSector(sapID id, int track, int sect, sapsector_t *sapsector);
59   Cette routine lit le secteur numéro 'sect' de la piste numéro 'track' et
60  place le résultat dans la structure désignée par 'sapsector', retournant
61  SAP_OK ou une combinaison des flags suivants:
62  SAP_NO_STD_FMT: le format du secteur est non standard.
63  SAP_PROTECTED : le secteur est protégé en écriture.
64  SAP_BAD_SECTOR: le secteur a de mauvais identificateurs (piste, secteur)
65  SAP_CRC_ERROR : erreur de CRC sur les données du secteur.
66   Si une erreur survient, la routine retourne SAP_ERROR et stocke le numéro
67  d'erreur dans la variable sap_errno:
68  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
69  SAP_EEMPTY: l'archive SAP est vide.
70  SAP_EBUSY: l'archive SAP est en train d'être remplie par sap_FillArchive()
71
72
73int sap_ReadSectorEx(sapID id, int track, int sect, int nsects, unsigned char data[]);
74   Cette routine lit 'nsects' secteurs de la piste 'track' à partir du
75  secteur 'sect' et place le résultat dans le tableau 'data'. Retourne
76  SAP_OK.
77   Si une erreur survient, la routine retourne SAP_ERROR et stocke le numéro
78  d'erreur dans la variable sap_errno:
79  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
80  SAP_EEMPTY: l'archive SAP est vide.
81  SAP_EBUSY: l'archive SAP est en train d'être remplie par sap_FillArchive()
82
83
84int sap_WriteSector(sapID id, int track, int sect, sapsector_t *sapsector);
85   Cette routine écrit le secteur désigné par 'sapsector' au secteur numéro
86  'sect' de la piste numéro 'track'. Tous les champs du secteur doivent être
87  spécifiés, exceptés les deux champs relatifs au CRC qui seront calculés
88  par la routine elle-même. Retourne SAP_OK.
89   Si une erreur survient, la routine retourne SAP_ERROR et stocke le numéro
90  d'erreur dans la variable sap_errno:
91  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
92  SAP_EEMPTY: l'archive SAP est vide.
93  SAP_EBUSY: l'archive SAP est en train d'être remplie par sap_FillArchive()
94
95
96int sap_WriteSectorEx(sapID id, int track, int sect, int nsects, const unsigned char data[])
97   Cette routine écrit 'nsects' secteurs dans la piste 'track' à partir du
98  secteur 'sect' en utilisant les données du tableau 'data'. Retourne
99  SAP_OK.
100   Si une erreur survient, la routine retourne SAP_ERROR et stocke le numéro
101  d'erreur dans la variable sap_errno:
102  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
103  SAP_EEMPTY: l'archive SAP est vide.
104  SAP_EBUSY: l'archive SAP est en train d'être remplie par sap_FillArchive()
105
106
107
1082. Routines de manipulation du format logique:
109
110int sap_FormatArchive(sapID id, int capacity);
111   Cette routine formate une archive SAP au format DOS BASIC Thomson et
112  retourne SAP_OK. Elle supporte les capacités SAP_TRK80 (80 pistes) et
113  SAP_TRK40 (40 pistes). Elle peut être utilisée à la fois sur une archive
114  créée par sap_CreateArchive() ou ouverte par sap_OpenArchive().
115   Si une erreur survient, la routine retourne SAP_ERROR et stocke le numéro
116  d'erreur dans la variable sap_errno:
117  SAP_EINVAL: le numéro d'identification (sapID) ou le format est invalide.
118  SAP_EBUSY: l'archive SAP est en train d'être remplie par sap_FillArchive()
119
120
121int sap_ListArchive(sapID id, char buffer[], int buffer_size);
122   Cette routine copie la liste des fichiers (au sens du DOS BASIC Thomson)
123  présents dans l'archive SAP dans le tampon 'buffer' dont la taille est en
124  octets est spécifiée par 'buffer_size' et retourne le nombre de ligne de
125  cette liste.
126   Si une erreur survient, la routine retourne 0 et stocke le numéro
127  d'erreur dans la variable sap_errno:
128  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
129  SAP_EEMPTY: l'archive SAP est vide.
130  SAP_EBUSY: l'archive SAP est en train d'être remplie par sap_FillArchive()
131
132
133int sap_AddFile(sapID id, const char filename[]);
134   Cette routine ajoute le fichier spécifié par 'filename' à l'archive SAP
135  (en tant que fichier au sens du DOS BASIC Thomson) et retourne la taille
136  du fichier en octets.
137   Si une erreur survient, la routine retourne 0 et stocke le numéro
138  d'erreur dans la variable sap_errno:
139  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
140  SAP_EEMPTY: l'archive SAP est vide.
141  SAP_EBUSY: l'archive SAP est en train d'être remplie par sap_FillArchive()
142  SAP_ENOENT: le fichier n'existe pas.
143  SAP_ENFILE: le fichier est vide.
144  SAP_ENOSPC: le répertoire de l'archive SAP est plein.
145  SAP_EFBIG: le fichier est trop gros pour l'espace libre de l'archive SAP.
146
147
148int sap_DeleteFile(sapID id, const char pattern[]);
149   Cette routine efface le fichier spécifié par 'pattern' de l'archive SAP
150  et retourne la taille du fichier en octets. Elle traite la présence des
151  wildcards '*' et '?' dans la chaîne 'pattern' et retourne dans ce cas la
152  taille totale de tous les fichiers effacés (éventuellement nulle).
153   Si une erreur survient, la routine retourne 0 et stocke le numéro
154  d'erreur dans la variable sap_errno:
155  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
156  SAP_EEMPTY: l'archive SAP est vide.
157  SAP_EBUSY: l'archive SAP est en train d'être remplie par sap_FillArchive()
158  SAP_ENOENT: le fichier n'existe pas dans l'archive SAP (erreur non valide
159              lorsque 'pattern' contient au moins une wilcard).
160
161
162int sap_ExtractFile(sapID id, const char pattern[]);
163   Cette routine extrait le fichier spécifié par 'pattern' de l'archive SAP
164  et retourne la taille du fichier en octets. Elle traite la présence des
165  wildcards '*' et '?' dans la chaîne 'pattern' et retourne dans ce cas la
166  taille totale de tous les fichiers extraits (éventuellement nulle).
167   Si une erreur survient, la routine retourne 0 et stocke le numéro
168  d'erreur dans la variable sap_errno:
169  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
170  SAP_EEMPTY: l'archive SAP est vide.
171  SAP_EBUSY: l'archive SAP est en train d'être remplie par sap_FillArchive()
172  SAP_ENOENT: le fichier n'existe pas dans l'archive SAP (erreur non valide
173              lorsque 'pattern' contient au moins une wilcard).
174  SAP_EPERM: impossible d'écrire le ou les fichiers sur le support.
175
176
177
178int sap_GetFileInfo(sapID id, const char filename[], sapfileinfo_t *info);
179   Cette routine remplit les champs de la structure 'info' avec les
180  informations relatives au fichier 'filename' spécifié. Retourne SAP_OK.
181   Si une erreur survient, la routine retourne SAP_ERROR et stocke le numéro
182  d'erreur dans la variable sap_errno:
183  SAP_EINVAL: le numéro d'identification (sapID) est invalide.
184  SAP_EEMPTY: l'archive SAP est vide.
185  SAP_EBUSY: l'archive SAP est en train d'être remplie par sap_FillArchive()
186  SAP_ENOENT: le fichier n'existe pas dans l'archive SAP.
187
188
189
190Eric Botcazou
191e-mail: <ebotcazou@libertysurf.fr>
Note: See TracBrowser for help on using the repository browser.