#include "Surcouche.h"
#include <string.h>
Aller au code source de ce fichier.
Fonctions | |
| int | ThreadStart (THREAD *pThread, ROUTINE Process, PARAMETRE Param) |
| Demare un thread. | |
| void | ThreadStop (THREAD *pThread) |
| Stop un thread. | |
| void | ThreadExit (int ExitCode) |
| Sortie d'un thread. | |
| void | ThreadWait (THREAD *pThread) |
| Attent un thread. | |
| void | MutexInit (MUTEX *pMutex) |
| Initialise un mutex. | |
| void | MutexLock (MUTEX *pMutex) |
| Attent un mutex. | |
| void | MutexUnLock (MUTEX *pMutex) |
| Libere un mutex. | |
| void | MutexStop (MUTEX *pMutex) |
| Stop un mutex. | |
| int | ModuleLoad (MODULE *pModule, char *pName) |
| Charge un module. | |
| int | ModuleUnload (MODULE *pModule) |
| Decharge un module. | |
| int | ModuleImport (MODULE Module, ROUTINE *pFonction, char *pName) |
| Importe une fonction. | |
| int | SocketLoad (void) |
| Configure le reseau. | |
| void | SocketUnLoad (void) |
| Libere le reseau. | |
| void | SocketClose (SOCKET Sock) |
| Ferme un socket. | |
| void | TempWait (unsigned int Delai) |
| Attend un certain delai. | |
| void | TempPause () |
| Marque une pause. | |
| void | ConsoleClear () |
| Efface la console. | |
| void | ConsoleSetColor (unsigned int iColor) |
| Change la couleur de la console. | |
| int | ConsoleCharWrite (CONSOLE *pConsole, unsigned int iPosX, unsigned int iPosY, char *pData, unsigned int iLength) |
| Ecrit dans le buffer des carracteres. | |
| int | ConsoleCharRead (CONSOLE *pConsole, unsigned int iPosX, unsigned int iPosY, char *pData, unsigned int iLength) |
| Lit dans le buffer des carracteres. | |
| int | ConsoleZoneWrite (CONSOLE *pConsole, unsigned int iPosX, unsigned int iPosY, unsigned int iLength, unsigned int iHeight, CHARINFO *pData) |
| Ecrit dans le buffer une zone. | |
| int | ConsoleZoneRead (CONSOLE *pConsole, unsigned int iPosX, unsigned int iPosY, unsigned int iLength, unsigned int iHeight, CHARINFO *pData) |
| Lit dans le buffer une zone. | |
| int | KeyGet () |
| Retourne une touche. | |
| int | KeyGet2 () |
| Retourne une touche sans valider. | |
| int | KeyWait () |
| Attend la frappe d'une touche et la retourne. | |
| int | KeyPressed () |
| Permet de savoir si une touche a été presser. | |
| int | FileDelete (char *pName) |
| Supprime un fichier. | |
| int | FileRename (char *pName, char *pNewName) |
| Renome un fichier ou repertoire. | |
| DIRECTORY | DirOpen (char *pDirName, char *pFirstData, int *pIsFile) |
| Ouvre un dossier. | |
| int | DirClose (DIRECTORY *pDir) |
| Ferme un dossier. | |
| int | DirGetNext (DIRECTORY *pDir, char *pNextData, int *pIsFile) |
| Récupère une donnée d'un dossier. | |
| int | DirCreate (char *pName) |
| Crée un repertoire. | |
| int | DirDelete (char *pName) |
| Supprime un repertoire. | |
Définition dans le fichier Surcouche.c.
|
||||||||||||||||||||||||
|
Lit des carracteres a une position donnée dans la console.
Définition à la ligne 272 du fichier Surcouche.c. 00273 {
00274 #ifdef WIN32
00275 COORD Pos;
00276
00277 Pos.X = iPosX;
00278 Pos.Y = iPosY;
00279
00280 if(!iLength)
00281 iLength = strlen(pData);
00282
00283 return ReadConsoleOutputCharacter(pConsole, pData, iLength, Pos, (LPDWORD)iLength);
00284 #else
00285 return 0;
00286 #endif
00287 }
|
|
||||||||||||||||||||||||
|
Ecrit des carracteres a une position donnée dans la console
Définition à la ligne 255 du fichier Surcouche.c. 00256 {
00257 #ifdef WIN32
00258 COORD Pos;
00259
00260 Pos.X = iPosX;
00261 Pos.Y = iPosY;
00262
00263 if(!iLength)
00264 iLength = strlen(pData);
00265
00266 return WriteConsoleOutputCharacter(pConsole, pData, iLength, Pos, (LPDWORD)iLength);
00267 #else
00268 return 0;
00269 #endif
00270 }
|
|
|
Vide le buffer stdout et efface la console. Définition à la ligne 215 du fichier Surcouche.c. Référencé par GereEntry(), et GereTable(). 00216 {
00217 #ifdef WIN32
00218 system("CLS");
00219 #else
00220 printf("\033[2J");
00221 #endif
00222 }
|
|
|
Définie la couleur de police et de fond de la console.
Définition à la ligne 224 du fichier Surcouche.c. 00225 {
00226 #ifdef WIN32
00227 char Buffer[12];
00228
00229 sprintf(Buffer, "COLOR %X", iColor);
00230 system(Buffer);
00231 #else
00232
00233 #endif
00234 }
|
|
||||||||||||||||||||||||||||
|
Lit dans une zone à une position donnée dans la console
Définition à la ligne 311 du fichier Surcouche.c. 00312 {
00313 #ifdef WIN32
00314 COORD Pos;
00315 COORD Size;
00316 SMALL_RECT Zone;
00317
00318 Pos.X = iPosX;
00319 Pos.Y = iPosY;
00320 Size.X = iLength - iPosX;
00321 Size.Y = iHeight - iPosY;
00322 Zone.Left = Pos.X;
00323 Zone.Top = Pos.Y;
00324 Zone.Right = Size.X;
00325 Zone.Bottom = Size.Y;
00326
00327 return ReadConsoleOutput(pConsole, pData, Size, Pos, &Zone);
00328 #else
00329 return 0;
00330 #endif
00331 }
|
|
||||||||||||||||||||||||||||
|
Ecrit dans une zone à une position donnée dans la console
Définition à la ligne 289 du fichier Surcouche.c. 00290 {
00291 #ifdef WIN32
00292 COORD Pos;
00293 COORD Size;
00294 SMALL_RECT Zone;
00295
00296 Pos.X = iPosX;
00297 Pos.Y = iPosY;
00298 Size.X = iLength - iPosX;
00299 Size.Y = iHeight - iPosY;
00300 Zone.Left = Pos.X;
00301 Zone.Top = Pos.Y;
00302 Zone.Right = Size.X;
00303 Zone.Bottom = Size.Y;
00304
00305 return WriteConsoleOutput(pConsole, pData, Size, Pos, &Zone);
00306 #else
00307 return 0;
00308 #endif
00309 }
|
|
|
Ferme un dossier explorer.
Définition à la ligne 446 du fichier Surcouche.c. 00447 {
00448 #ifdef WIN32
00449 if(FindClose(pDir))
00450 return 0;
00451 #else
00452 if(!closedir(*pDir))
00453 return 0;
00454 #endif
00455
00456 return 1;
00457 }
|
|
|
Crée un repertoire via l'os.
Définition à la ligne 500 du fichier Surcouche.c. 00501 {
00502 #ifdef WIN32
00503 if(CreateDirectory(pName, NULL))
00504 return 0;
00505 #else
00506 mode_t modes;
00507
00508 modes = S_IRWXU | S_IXGRP | S_IXOTH;
00509 if(!mkdir(pName, modes))
00510 return 0;
00511 #endif
00512
00513 return 1;
00514 }
|
|
|
Supprime un repertoire vide via l'os.
Définition à la ligne 516 du fichier Surcouche.c. 00517 {
00518 #ifdef WIN32
00519 if(RemoveDirectory(pName))
00520 return 0;
00521 #else
00522 if(!rmdir(pName))
00523 return 0;
00524 #endif
00525
00526 return 1;
00527 }
|
|
||||||||||||||||
|
Récupère la donnée suivante d'un dossier.
Définition à la ligne 459 du fichier Surcouche.c. 00460 {
00461 #ifdef WIN32
00462 WIN32_FIND_DATA Find;
00463 #else
00464 struct dirent *Find;
00465 struct stat Stat;
00466 #endif
00467
00468 *pNextData = '\0';
00469 *pIsFile = 1;
00470
00471 #ifdef WIN32
00472 if(FindNextFile(pDir, &Find))
00473 {
00474 if(Find.cFileName)
00475 strcpy(pNextData, Find.cFileName);
00476
00477 if(Find.dwFileAttributes)
00478 if(Find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
00479 *pIsFile = 0;
00480 return 0;
00481 }
00482 #else
00483 if(Find = readdir(*pDir))
00484 {
00485 Find = readdir(*pDir);
00486 if(Find->d_name)
00487 strcpy(pNextData, Find->d_name);
00488
00489 lstat(pNextData, &Stat);
00490 if(S_ISDIR(Stat.st_mode))
00491 *pIsFile = 0;
00492
00493 return 0;
00494 }
00495 #endif
00496
00497 return 1;
00498 }
|
|
||||||||||||||||
|
Ouvre un dossier pour l'explorer et recupère la première donnée.
Définition à la ligne 399 du fichier Surcouche.c. 00400 {
00401 char *DirName;
00402 DIRECTORY Dir;
00403 #ifdef WIN32
00404 WIN32_FIND_DATA Find;
00405 #else
00406 struct dirent *Find;
00407 struct stat Stat;
00408 #endif
00409
00410 DirName = (char *)malloc(sizeof(char) * (strlen(pDirName) + 3));
00411 strcpy(DirName, pDirName);
00412 strcat(DirName, "\\");
00413 strcat(DirName, "*");
00414 *pFirstData = '\0';
00415 *pIsFile = 1;
00416
00417 #ifdef WIN32
00418 if(Dir = FindFirstFile(DirName, &Find))
00419 {
00420 if(Find.cFileName)
00421 strcpy(pFirstData, Find.cFileName);
00422
00423 if(Find.dwFileAttributes)
00424 if(Find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
00425 *pIsFile = 0;
00426 }
00427 #else
00428 Dir = opendir(DirName);
00429 if(Dir)
00430 {
00431 Find = readdir(Dir);
00432 if(Find->d_name)
00433 strcpy(pFirstData, Find->d_name);
00434
00435 lstat(DirName, &Stat);
00436 if(S_ISDIR(Stat.st_mode))
00437 *pIsFile = 0;
00438 }
00439 #endif
00440
00441 free(DirName);
00442
00443 return Dir;
00444 }
|
|
|
Supprime un fichier via l'os.
Définition à la ligne 372 du fichier Surcouche.c. Référencé par DataBase::SaveBase(). 00373 {
00374 #ifdef WIN32
00375 if(DeleteFile(pName))
00376 return 0;
00377 #else
00378 if(!remove(pName))
00379 return 0;
00380 #endif
00381
00382 return 1;
00383 }
|
|
||||||||||||
|
Renome un fichier ou repertoire via l'os, permet aussi de le déplacé.
Définition à la ligne 385 du fichier Surcouche.c. 00386 {
00387 #ifdef WIN32
00388 if(MoveFile(pName, pNewName))
00389 return 0;
00390 #else
00391 if(!rename(pName, pNewName))
00392 return 0;
00393 #endif
00394
00395 return 1;
00396 }
|
|
|
Retourne la plus vielle touche du buffer stdin.
Définition à la ligne 334 du fichier Surcouche.c. Référencé par GereEntry(), et GereTable(). 00335 {
00336 fflush(stdin);
00337
00338 return getchar();
00339 }
|
|
|
Retourne la plus vielle touche du buffer stdin sans devoir presser 'entrée'.
Définition à la ligne 341 du fichier Surcouche.c. 00342 {
00343 #ifdef WIN32
00344 return _getch();
00345 #else
00346 return 0;
00347 #endif
00348 }
|
|
|
Permet de savoir si une touche a été presser.
Définition à la ligne 361 du fichier Surcouche.c. 00362 {
00363 #ifdef WIN32
00364 return _kbhit();
00365 #else
00366 return 0;
00367 #endif
00368 }
|
|
|
Pause la tache en attente de la frappe d'une touche et retourne son code.
Définition à la ligne 350 du fichier Surcouche.c. 00351 {
00352 #ifdef WIN32
00353 while(!_kbhit());
00354
00355 return _getch();
00356 #else
00357 return 0;
00358 #endif
00359 }
|
|
||||||||||||||||
|
Importe une fonction depuis un module dynamique.
Définition à la ligne 141 du fichier Surcouche.c. Référencé par ModuleModule::AddFonction(), ModuleModule::Load(), et ModuleModule::UnLoad(). 00142 {
00143 *pFonction = NULL;
00144
00145 #ifdef WIN32
00146 *pFonction = (ROUTINE)GetProcAddress(Module, pName);
00147 #else
00148 *pFonction = (ROUTINE)dlsym(Module, pName);
00149 #endif
00150
00151 if(*pFonction)
00152 return 1;
00153
00154 return 0;
00155 }
|
|
||||||||||||
|
Charge un module dynamique.
Définition à la ligne 110 du fichier Surcouche.c. Référencé par ModuleModule::Load(). 00111 {
00112 *pModule = NULL;
00113 #ifdef WIN32
00114 *pModule = (MODULE)LoadLibrary(pName);
00115 #else
00116 *pModule = (MODULE)dlopen(pName, RTLD_NOW);
00117 #endif
00118
00119 if(*pModule)
00120 return 1;
00121
00122 return 0;
00123 }
|
|
|
Decharge un module dynamique.
Définition à la ligne 125 du fichier Surcouche.c. Références MODULE. Référencé par ModuleModule::UnLoad(). 00126 {
00127 int r = 1;
00128 #ifdef WIN32
00129 if(FreeLibrary((MODULE)*pModule))
00130 r = 0;
00131 #else
00132 if(!dlclose((MODULE)*pModule))
00133 r = 0;
00134 #endif
00135
00136 *pModule = NULL;
00137
00138 return r;
00139 }
|
|
|
Initialise un verou de syncronisation de tache
Définition à la ligne 67 du fichier Surcouche.c. Références MUTEX. Référencé par DataBase::DataBase(), DataBaseTable::DataBaseTable(), Ini::Ini(), Module::Module(), MutexLock(), et XML::XML(). 00068 {
00069 #ifdef WIN32
00070 *pMutex = (MUTEX)CreateMutex(NULL, FALSE, NULL);
00071 #else
00072 pthread_mutex_init((MUTEX *)pMutex, NULL);
00073 #endif
00074 }
|
|
|
Pause la tache en cour en attente du déverouillage du mutex et va le verouillé.
Définition à la ligne 76 du fichier Surcouche.c. Références MUTEX, et MutexInit(). Référencé par XML::Load(), Module::LoadModules(), XML::Print(), RequestServerData(), Ini::Save(), XML::Save(), DataBase::SaveBase(), DataBaseTable::SaveEntrys(), et Module::UnLoadModules(). 00077 {
00078 if(!pMutex)
00079 MutexInit(pMutex);
00080
00081 #ifdef WIN32
00082 WaitForSingleObject((MUTEX)pMutex, INFINITE);
00083 #else
00084 pthread_mutex_lock((MUTEX *)pMutex);
00085 #endif
00086 }
|
|
|
Déverouille et détrui un mutex.
Définition à la ligne 97 du fichier Surcouche.c. Références MUTEX. Référencé par DataBase::~DataBase(), DataBaseTable::~DataBaseTable(), Ini::~Ini(), Module::~Module(), et XML::~XML(). 00098 {
00099 #ifdef WIN32
00100 ReleaseMutex((MUTEX)pMutex);
00101 CloseHandle((MUTEX)pMutex);
00102 *pMutex = NULL;
00103 #else
00104 pthread_mutex_destroy((MUTEX *)pMutex);
00105 pMutex = NULL;
00106 #endif
00107 }
|
|
|
Déverouille le mutex préalablement réservé.
Définition à la ligne 88 du fichier Surcouche.c. Références MUTEX. Référencé par XML::Load(), Module::LoadModules(), XML::Print(), RequestServerData(), Ini::Save(), XML::Save(), DataBase::SaveBase(), DataBaseTable::SaveEntrys(), et Module::UnLoadModules(). 00089 {
00090 #ifdef WIN32
00091 ReleaseMutex((MUTEX)pMutex);
00092 #else
00093 pthread_mutex_unlock((MUTEX *)pMutex);
00094 #endif
00095 }
|
|
|
Relache un socket proprement.
Définition à la ligne 184 du fichier Surcouche.c. Référencé par NetConnect::Close(), NetServer::KillClientNo(), NetClient::Stop(), et NetServer::Stop(). 00185 {
00186 #ifdef WIN32
00187 closesocket(Sock);
00188 #else
00189 close(Sock);
00190 #endif
00191 Sock = 0;
00192 }
|
|
|
Configure l'os pour l'utilisation de socket.
Définition à la ligne 159 du fichier Surcouche.c. Référencé par NetServer::Start(), et NetClient::Start(). 00160 {
00161 #ifdef WIN32
00162 WORD wVersionRequested = MAKEWORD(1, 1);
00163 WSADATA wsaData;
00164
00165 if(WSAStartup(wVersionRequested, &wsaData))
00166 {
00167 WSACleanup();
00168 return 1;
00169 }
00170 #else
00171 signal(SIGPIPE, SIG_IGN);
00172 #endif
00173
00174 return 0;
00175 }
|
|
|
Relache la gestion du reseau.
Définition à la ligne 177 du fichier Surcouche.c. Référencé par NetServer::Stop(), et NetClient::Stop(). 00178 {
00179 #ifdef WIN32
00180 WSACleanup();
00181 #endif
00182 }
|
|
|
Pause la tache en attente de la frappe d'une touche.
Définition à la ligne 205 du fichier Surcouche.c. 00206 {
00207 #ifdef WIN32
00208 system("PAUSE");
00209 #else
00210
00211 #endif
00212 }
|
|
|
Fait rentrée la tache en cour d'éxécution en attente pendant Delai ms.
Définition à la ligne 196 du fichier Surcouche.c. Référencé par NetClient::Start(). 00197 {
00198 #ifdef WIN32
00199 Sleep(Delai);
00200 #else
00201 usleep(Delai * 1000);
00202 #endif
00203 }
|
|
|
Sortie propre d'une tache et renvoie iExitCode au systeme.
Définition à la ligne 47 du fichier Surcouche.c. Référencé par ThreadGestionClient(), et NetServer::WaitClient(). 00048 {
00049 #ifdef WIN32
00050 ExitThread(ExitCode);
00051 #else
00052 pthread_exit((void *)&ExitCode);
00053 #endif
00054 }
|
|
||||||||||||||||
|
Demare une tache Process avec un parametre Param.
Définition à la ligne 15 du fichier Surcouche.c. Références PARAMETRE, ROUTINE, et THREAD. Référencé par NetServer::Start(), et NetServer::WaitClient(). 00016 {
00017 #ifdef WIN32
00018 *pThread = (THREAD)CreateThread(NULL, 0, (ROUTINE)Process, (PARAMETRE)Param, 0, NULL);
00019 if(pThread == INVALID_HANDLE_VALUE)
00020 return 1;
00021 #else
00022 pthread_attr_t Type;
00023
00024 if(pthread_attr_init(&Type))
00025 return(1);
00026
00027 pthread_attr_setdetachstate(&Type, PTHREAD_CREATE_JOINABLE);
00028
00029 if(pthread_create((THREAD *)pThread, &Type, (ROUTINE)Process, (PARAMETRE)Param))
00030 return 1;
00031 #endif
00032
00033 return 0;
00034 }
|
|
|
Force la fermeture d'une tache.
Définition à la ligne 36 du fichier Surcouche.c. Références THREAD. 00037 {
00038 #ifdef WIN32
00039 TerminateThread((THREAD)pThread, FALSE);
00040 CloseHandle((THREAD)pThread);
00041 #else
00042 pthread_cancel((THREAD)pThread);
00043 #endif
00044 *pThread = 0;
00045 }
|
|
|
Pause la tache en cour en attente de la fin de la tache donnée.
Définition à la ligne 56 du fichier Surcouche.c. Références THREAD. 00057 {
00058 #ifdef WIN32
00059 WaitForSingleObject((THREAD)pThread, INFINITE);
00060 CloseHandle((THREAD)pThread);
00061 #else
00062 pthread_join((THREAD)pThread, NULL);
00063 #endif
00064 *pThread = 0;
00065 }
|
1.3.9.1