Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- @file_system.inc - v25/11/16.
- - natives
- native File_Open(File:file, location[], open_mode);
- native File_Close(File:file);
- native File_WriteStr(File:file, name[], value[]);
- native File_WriteInt(File:file, name[], value);
- native File_WriteFloat(File:file, name[], Float:value);
- native File_WriteBool(File:file, name[], bool:value);
- native File_ReadStr(File:file, name[], store[]);
- native File_ReadInt(File:file, name[], &store);
- native File_ReadFloat(File:file, name[], &Float:store);
- native File_ReadBool(File:file, name[], &bool:store);
- native File_WriteEx(File:file, const params[], {Float, _}:...);
- native File_ReadEx(File:file, const params[], {Float, _}:...);
- */
- #if !defined FILE_MAX_STRING
- #define FILE_MAX_STRING 128
- #endif
- new gFileStr[FILE_MAX_STRING];
- /* Main */
- #define File_Open(%1,%2,%3) if((%1 = fopen(%2, %3)))
- #define File_Close(%1) fclose(%1)
- /* Write */
- stock File_WriteStr(File:file, name[], value[])
- {
- format(gFileStr, sizeof(gFileStr), "%s = %s\r\n", name, value);
- fwrite(file, gFileStr);
- }
- stock File_WriteInt(File:file, name[], value)
- {
- format(gFileStr, sizeof(gFileStr), "%s = %i\r\n", name, value);
- fwrite(file, gFileStr);
- }
- stock File_WriteFloat(File:file, name[], Float:value)
- {
- format(gFileStr, sizeof(gFileStr), "%s = %f\r\n", name, value);
- fwrite(file, gFileStr);
- }
- stock File_WriteBool(File:file, name[], bool:value)
- {
- File_WriteStr(file, name, (value == true) ? ("true") : ("false"));
- }
- /* Read */
- stock File_ReadStr(File:file, name[], store[])
- {
- fseek(file, strlen(name) + 3, seek_current);
- fread(file, gFileStr);
- format(store, strlen(gFileStr) - 1, "%s", gFileStr);
- }
- stock File_ReadInt(File:file, name[], &store)
- {
- fseek(file, strlen(name) + 3, seek_current);
- fread(file, gFileStr);
- store = strval(gFileStr);
- }
- stock File_ReadFloat(File:file, name[], &Float:store)
- {
- fseek(file, strlen(name) + 3, seek_current);
- fread(file, gFileStr);
- store = floatstr(gFileStr);
- }
- stock File_ReadBool(File:file, name[], &bool:store)
- {
- fseek(file, strlen(name) + 3, seek_current);
- fread(file, gFileStr, 2);
- store = bool:(gFileStr[0] == 't');
- }
- /* using sscanf */
- #define File_ReadEx(%1,%2,%3) fread(%1, gFileStr); gFileStr[strlen(gFileStr) - 2] = '\0'; sscanf(gFileStr, %2, %3)
- stock File_WriteEx(File:file, const params[], {Float, _}:...)
- {
- new i, num = numargs(), j, tmp[sizeof(gFileStr)], arg, idx;
- gFileStr = "";
- for(i = 2; i < num; i++)
- {
- switch(params[i - 2])
- {
- case 'i', 'd': format(tmp, 13, "%i ", getarg(i));
- case 'f': format(tmp, 20, "%f ", getarg(i));
- case 'c': format(tmp, 3, "%c ", getarg(i));
- case 'b': format(tmp, 20, "%b ", getarg(i));
- case 'x': format(tmp, 20, "%x ", getarg(i));
- case 's':
- {
- tmp = "", j = 0;
- while((arg = getarg(i, j)) != '\0') tmp[j++] = arg;
- tmp[j++] = ' ';
- tmp[j] = '\0';
- }
- }
- strcat(gFileStr, tmp);
- }
- idx = strlen(gFileStr);
- gFileStr[idx - 1] = '\r';
- gFileStr[idx] = '\n';
- gFileStr[idx + 1] = '\0';
- fwrite(file, gFileStr);
- return 1;
- }
- /*
- * @EOF
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement