| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- /*
- * Dini 1.5.1
- * (c) Copyright 2006 by DracoBlue
- *
- * @author : DracoBlue (http://dracoblue.com)
- * @date : 13th May 2006
- * @update : 3rd June 2007
- * @require : DUtils 1.8
- *
- * This file is provided as is (no warranties).
- *
- * Feel free to use it, a little message in
- * about box is honouring thing, isn't it?
- *
- */
- #if defined _dini_included
- #endinput
- #endif
- #define _dini_included
- #pragma library dutils
- #include <dutils>
- stock dini_Exists(filename[]) {
- if (fexist(filename)) return true;
- return false;
- }
- stock dini_Remove(filename[]) {
- if (!fexist(filename)) return false;
- fremove(filename);
- return true;
- }
- stock dini_Create(filename[]) {
- new File:fhnd;
- if (fexist(filename)) return false;
- fhnd=fopen(filename,io_write);
- fclose(fhnd);
- return true;
- }
- stock dini_PRIVATE_ExtractKey(line[]) {
- new tmp[MAX_STRING];
- tmp[0]=0;
- if (strfind(line,"=",true)==-1) return tmp;
- set(tmp,strlower(ret_memcpy(line,0,strfind(line,"=",true))));
- return tmp;
- }
- stock dini_PRIVATE_ExtractValue(line[]) {
- new tmp[MAX_STRING];
- tmp[0]=0;
- if (strfind(line,"=",true)==-1) {
- return tmp;
- }
- set(tmp,ret_memcpy(line,strfind(line,"=",true)+1,strlen(line)));
- return tmp;
- }
- stock dini_Set(filename[],key[],value[]) {
- new File:fohnd, File:fwhnd;
- new bool:wasset=false;
- new tmpres[MAX_STRING];
- if (key[0]==0) return false; /* If we have no sign in key, it can't be set*/
- format(tmpres,sizeof(tmpres),"%s.part",filename);
- fohnd=fopen(filename,io_read);
- if (!fohnd) return false;
- fremove(tmpres);
- fwhnd=fopen(tmpres,io_write);
- // if (!fwhnd) return false;
- while (fread(fohnd,tmpres)) {
- StripNewLine(tmpres);
- if ((!wasset)&&(equal(dini_PRIVATE_ExtractKey(tmpres),key,true))) {
- /* We've got what needs to be replaced! */
- format(tmpres,sizeof(tmpres),"%s=%s",key,value);
- wasset=true;
- }
- fwrite(fwhnd,tmpres);
- fwrite(fwhnd,"\r\n");
- }
- if (!wasset) {
- format(tmpres,sizeof(tmpres),"%s=%s",key,value);
- fwrite(fwhnd,tmpres);
- fwrite(fwhnd,"\r\n");
- }
- fclose(fohnd);
- fclose(fwhnd);
- format(tmpres,sizeof(tmpres),"%s.part",filename);
- if (fcopytextfile(tmpres,filename)) {
- return fremove(tmpres);
- }
- return false;
- }
- stock dini_IntSet(filename[],key[],value) {
- new valuestring[MAX_STRING];
- format(valuestring,sizeof(valuestring),"%d",value);
- return dini_Set(filename,key,valuestring);
- }
- stock dini_Int(filename[],key[]) {
- return strval(dini_Get(filename,key));
- }
- stock dini_FloatSet(filename[],key[],Float:value) {
- new valuestring[MAX_STRING];
- format(valuestring,sizeof(valuestring),"%f",value);
- return dini_Set(filename,key,valuestring);
- }
- stock Float:dini_Float(filename[],key[]) {
- return floatstr(dini_Get(filename,key));
- }
- stock dini_Bool(filename[],key[]) {
- return strval(dini_Get(filename,key));
- }
- stock dini_BoolSet(filename[],key[],value) {
- new valuestring[MAX_STRING];
- format(valuestring,sizeof(valuestring),"%d",value);
- return dini_Set(filename,key,valuestring);
- }
- stock dini_Unset(filename[],key[]) {
- new File:fohnd, File:fwhnd;
- new tmpres[MAX_STRING];
- format(tmpres,sizeof(tmpres),"%s.part",filename);
- fohnd=fopen(filename,io_read);
- if (!fohnd) return false;
- fremove(tmpres);
- fwhnd=fopen(tmpres,io_write);
- // if (!fwhnd) return false;
- while (fread(fohnd,tmpres)) {
- StripNewLine(tmpres);
- if (equal(dini_PRIVATE_ExtractKey(tmpres),key,true)) {
- /* We've got what needs to be removed! */
- } else {
- format(tmpres,sizeof(tmpres),"%s",tmpres);
- fwrite(fwhnd,tmpres);
- fwrite(fwhnd,"\r\n");
- }
- }
- fclose(fohnd);
- fclose(fwhnd);
- format(tmpres,sizeof(tmpres),"%s.part",filename);
- if (fcopytextfile(tmpres,filename)) {
- return fremove(tmpres);
- }
- return false;
- }
- stock dini_Get(filename[],key[]) {
- new File:fohnd;
- new tmpres[MAX_STRING];
- new tmpres2[MAX_STRING];
- tmpres[0]=0;
- fohnd=fopen(filename,io_read);
- if (!fohnd) return tmpres;
- while (fread(fohnd,tmpres)) {
- StripNewLine(tmpres);
- if (equal(dini_PRIVATE_ExtractKey(tmpres),key,true)) {
- /* We've got what we need */
- tmpres2[0]=0;
- strcat(tmpres2,dini_PRIVATE_ExtractValue(tmpres));
- fclose(fohnd);
- return tmpres2;
- }
- }
- fclose(fohnd);
- return tmpres;
- }
- stock dini_Isset(filename[],key[]) {
- new File:fohnd;
- new tmpres[MAX_STRING];
- fohnd=fopen(filename,io_read);
- if (!fohnd) return false;
- while (fread(fohnd,tmpres)) {
- StripNewLine(tmpres);
- if (equal(dini_PRIVATE_ExtractKey(tmpres),key,true)) {
- /* We've got what we need */
- fclose(fohnd);
- return true;
- }
- }
- fclose(fohnd);
- return false;
- }
|