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 écrite en ANSI C. Elle fournit à la fois des routines de manipulation bas-niveau des archives SAP considérées comme format physique (images de disquettes) et des routines de manipulation haut-niveau des archives SAP considéré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é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é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é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ération d'un r�pertoire SAP</a></li> 26<li><a href="#add_file">Ajout d'un fichier à 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é et sap_errno contient l'un des codes d'erreur suivants:<br> 39SAP_ETOOMANY : trop d'archives SAP sont ouvertes simultanément.<br> 40SAP_ENOENT : l'archive SAP spécifiée n'existe pas.<br> 41SAP_EBADF : le fichier spécifié n'est pas une archive SAP.</p> 42 43<h5>Cré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é et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 50SAP_ETOOMANY : trop d'archives SAP sont ouvertes simultanément.<br> 51SAP_EPERM : impossible de cré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é et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 59SAP_EINVAL : le numé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éée par sap_CreateArchive() secteur par secteur, en commençant par le secteur 1 de la piste 0. A chaque appel le numéro de secteur est incrémenté de 1 et, si la piste courante devient pleine, la piste suivante est sélectionnée.<br> 68Retourne SAP_OK. En cas d'erreur, SAP_ERROR est retourné et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 69SAP_EINVAL : le numé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éro de piste</em></span><br> 77<span style="padding-left:30px"><em>sect : numé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ésultat de la lecture est dans la structure désigné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égé en écriture.<br> 84SAP_BAD_SECTOR : le secteur a de mauvais identificateurs (piste, secteur)<br> 85SAP_CRC_ERROR : erreur de CRC sur les données du secteur.</p> 86 87<p>En cas d'erreur, SAP_ERROR est retourné et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 88SAP_EINVAL : le numéro d'identification (sapID) est invalide.<br> 89SAP_EEMPTY : l'archive SAP est vide. 90SAP_EBUSY : l'archive SAP est en train d'être remplie par sap_FillArchive()</p> 91 92<h5>Lecture d'une sé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éro de piste de départ</em></span><br> 97<span style="padding-left:30px"><em>sect : numéro de secteur de départ</em></span><br> 98<span style="padding-left:30px"><em>nsect : nombre de secteurs à 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é et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 102SAP_EINVAL : le numéro d'identification (sapID) est invalide.<br> 103SAP_EEMPTY : l'archive SAP est vide. 104SAP_EBUSY : l'archive SAP est en train d'être remplie par sap_FillArchive()</p> 105 106<h5>É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éro de piste</em></span><br> 111<span style="padding-left:30px"><em>sect : numé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 être spécifiés, exceptés les deux champs relatifs au CRC qui seront calculés par la routine elle-même.<br> 115Retourne SAP_OK. En cas d'erreur, SAP_ERROR est retourné et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 116SAP_EINVAL : le numéro d'identification (sapID) est invalide.<br> 117SAP_EEMPTY : l'archive SAP est vide. 118SAP_EBUSY : l'archive SAP est en train d'être remplie par sap_FillArchive()</p> 119 120<h5>Écriture d'une sé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éro de piste de départ</em></span><br> 125<span style="padding-left:30px"><em>sect : numéro de secteur de départ</em></span><br> 126<span style="padding-left:30px"><em>nsect : nombre de secteurs à é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é et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 130SAP_EINVAL : le numéro d'identification (sapID) est invalide.<br> 131SAP_EEMPTY : l'archive SAP est vide. 132SAP_EBUSY : l'archive SAP est en train d'ê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é et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 141SAP_EINVAL : le numéro d'identification (sapID) ou le format est invalide.<br> 142SAP_EBUSY : l'archive SAP est en train d'être remplie par sap_FillArchive()</p> 143 144<h5>Récupération d'un ré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épertoire</em></span><br> 149<span style="padding-left:30px"><em>buffer_size : taille du buffer de répertoire</em></span></p> 150 151<p>Retourne le nombre de lignes de la liste. En cas d'erreur, 0 est retourné et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 152SAP_EINVAL : le numéro d'identification (sapID) est invalide.<br> 153SAP_EEMPTY : l'archive SAP est vide. 154SAP_EBUSY : l'archive SAP est en train d'être remplie par sap_FillArchive()</p> 155 156<h5>Ajout d'un fichier à 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 à ajouter</em></span></p> 161 162<p>Retourne la taille du fichier en octets. En cas d'erreur, 0 est retourné et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 163SAP_EINVAL : le numéro d'identification (sapID) est invalide.<br> 164SAP_EEMPTY : l'archive SAP est vide. 165SAP_EBUSY : l'archive SAP est en train d'être remplie par sap_FillArchive()<br> 166SAP_ENOENT : le fichier n'existe pas. 167SAP_ENFILE : le fichier est vide. 168SAP_ENOSPC : le ré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 à effacer ('*' et '?' sont supportés)</em></span><br></p> 176 177<p>Retourne la taille du (des) fichier(s) en octets. En cas d'erreur, 0 est retourné et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 178SAP_EINVAL : le numéro d'identification (sapID) est invalide.<br> 179SAP_EEMPTY : l'archive SAP est vide. 180SAP_EBUSY : l'archive SAP est en train d'ê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 à extraire ('*' et '?' sont supportés)</em></span></p> 188 189<p>Retourne la taille du (des) fichier(s) en octets. En cas d'erreur, 0 est retourné et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 190SAP_EINVAL : le numéro d'identification (sapID) est invalide.<br> 191SAP_EEMPTY : l'archive SAP est vide. 192SAP_EBUSY : l'archive SAP est en train d'ê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'é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 à 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é et 'sap_errno' contient l'un des codes d'erreur suivants:<br> 204SAP_EINVAL : le numéro d'identification (sapID) est invalide.<br> 205SAP_EEMPTY : l'archive SAP est vide. 206SAP_EBUSY : l'archive SAP est en train d'ê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