source: thomson/tools/sap/libsap.txt@ 134f1c4

main
Last change on this file since 134f1c4 was 134f1c4, checked in by Adrien Destugues <pulkomandy@…>, 12 years ago

Add sapfs (Vital Motion modified code...)

git-svn-id: svn://localhost/thomson@21 85ae3b6b-dc8f-4344-a89d-598714f2e4e5

  • Property mode set to 100644
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.