2004-01-31 23:56:22 +03:00
|
|
|
/* Files functions
|
2004-02-08 14:31:54 +03:00
|
|
|
*
|
2004-02-21 23:30:04 +03:00
|
|
|
* by the AMX Mod X Development Team
|
|
|
|
* originally developed by OLO
|
2004-02-08 14:31:54 +03:00
|
|
|
*
|
|
|
|
* This file is provided as is (no warranties).
|
|
|
|
*/
|
2004-01-31 23:56:22 +03:00
|
|
|
|
2004-02-21 23:30:04 +03:00
|
|
|
#if defined _file_included
|
|
|
|
#endinput
|
|
|
|
#endif
|
|
|
|
#define _file_included
|
|
|
|
|
2004-01-31 23:56:22 +03:00
|
|
|
/* Reads content from directory.
|
2004-02-21 23:30:04 +03:00
|
|
|
* Returns index of next element or 0 when end of dir. is reached. */
|
2004-01-31 23:56:22 +03:00
|
|
|
native read_dir(const dirname[],pos,output[],len,&outlen);
|
|
|
|
|
|
|
|
/* Reads line from file. Returns index of next line or 0 when end of file is reached. */
|
|
|
|
native read_file(const file[],line,text[],len,&txtlen);
|
|
|
|
|
|
|
|
/* Writes text to file. Function returns 0 on failure.
|
2004-02-21 23:30:04 +03:00
|
|
|
* When line is set to -1, the text is added at the end of file. */
|
2004-01-31 23:56:22 +03:00
|
|
|
native write_file(const file[],const text[],line = -1);
|
|
|
|
|
|
|
|
/* Deletes file. Function returns 1 on success, 0 on failure. */
|
|
|
|
native delete_file(const file[]);
|
|
|
|
|
|
|
|
/* Checks for file. If file exists function returns 1, in other case 0. */
|
|
|
|
native file_exists(const file[]);
|
|
|
|
|
2006-04-27 21:31:38 +04:00
|
|
|
/* renames a file. returns 0 on failure, 1 on success.
|
2006-10-31 23:18:44 +03:00
|
|
|
* if relative true, rename_file will act like other natives which
|
|
|
|
* use the moddir as a base directory. otherwise, the current directory is
|
|
|
|
* undefined (but assumed to be hlds).
|
2006-04-27 21:31:38 +04:00
|
|
|
*/
|
2006-10-31 23:18:44 +03:00
|
|
|
native rename_file(const oldname[], const newname[], relative=0);
|
2006-04-27 21:31:38 +04:00
|
|
|
|
2005-07-07 23:53:02 +04:00
|
|
|
/* Checks if a directory exists */
|
|
|
|
native dir_exists(const dir[]);
|
|
|
|
|
2004-01-31 23:56:22 +03:00
|
|
|
/* Returns a file size in bytes if flag is set to 0.
|
2004-02-21 23:30:04 +03:00
|
|
|
* When flag is set to 1 returns number of lines in the file,
|
|
|
|
* and when flags is 2, function returns 1 if the file ends
|
|
|
|
* with line feed. If file doesn't exist returns -1. */
|
2004-04-04 00:05:27 +04:00
|
|
|
native file_size(const file[], flag=0);
|
|
|
|
|
|
|
|
#define SEEK_SET 0
|
|
|
|
#define SEEK_CUR 1
|
|
|
|
#define SEEK_END 2
|
|
|
|
|
2006-04-27 21:31:55 +04:00
|
|
|
//Open a file, returns a handle or 0 on failure
|
2005-05-29 20:36:35 +04:00
|
|
|
native fopen(const filename[],const mode[]);
|
2006-01-07 01:49:42 +03:00
|
|
|
|
|
|
|
//Closes a file handle
|
2004-04-04 00:05:27 +04:00
|
|
|
native fclose(file);
|
2006-01-07 01:49:42 +03:00
|
|
|
|
|
|
|
#define BLOCK_INT 4
|
|
|
|
#define BLOCK_SHORT 2
|
|
|
|
#define BLOCK_CHAR 1
|
|
|
|
#define BLOCK_BYTE 1
|
|
|
|
|
|
|
|
//The following functions work as such:
|
|
|
|
// RAW - means the array you pass is a raw bytestream, for experts only
|
|
|
|
// BLOCK - means you are passing in an array where each element will be written
|
|
|
|
// NORMAL - means you are writing only one element
|
|
|
|
// RAW and BLOCK return the number of blocks acted upon successfully
|
|
|
|
// NORMAL returns 1 on success
|
|
|
|
|
|
|
|
native fread(file, &data, mode);
|
|
|
|
native fread_blocks(file, data[], blocks, mode);
|
|
|
|
native fread_raw(file, stream[], blocksize, blocks);
|
|
|
|
native fwrite(file, data, mode);
|
|
|
|
native fwrite_blocks(file, const data[], blocks, mode);
|
|
|
|
native fwrite_raw(file, const stream[], blocksize, mode);
|
|
|
|
|
|
|
|
//Returns 1 if the file is ended, 0 otherwise
|
|
|
|
native feof(file);
|
|
|
|
|
|
|
|
//Reads a line from a text file -- includes newline!
|
|
|
|
native fgets(file, buffer[], maxlength);
|
|
|
|
|
2006-04-27 21:31:38 +04:00
|
|
|
//Writes a line to a text file. Returns # of characters written.
|
|
|
|
native fputs(file, const text[]);
|
|
|
|
|
2006-01-07 01:49:42 +03:00
|
|
|
//Writes a line to the file
|
2007-04-24 20:38:36 +04:00
|
|
|
native fprintf(file, const fmt[], any:...);
|
2006-01-07 01:49:42 +03:00
|
|
|
|
|
|
|
//Sets the current position in a file (see SEEK_ values above)
|
|
|
|
native fseek(file, position, start);
|
|
|
|
|
|
|
|
//Returns the current position in a file
|
|
|
|
native ftell(file);
|
2005-07-24 07:23:35 +04:00
|
|
|
|
2006-03-30 02:58:11 +04:00
|
|
|
//These are straight from the C standard.
|
|
|
|
native fgetc(file);
|
|
|
|
native fputc(file, data);
|
|
|
|
native fungetc(file, data);
|
|
|
|
|
2004-04-04 00:05:27 +04:00
|
|
|
//Return the size of a file
|
2007-04-24 20:38:36 +04:00
|
|
|
native filesize(const filename[], any:...);
|
2005-07-24 07:23:35 +04:00
|
|
|
|
2006-03-30 04:48:58 +04:00
|
|
|
//Attempts to remove a directory.
|
|
|
|
//Note that you cannot remove a directory that has files on most
|
|
|
|
// operating systems.
|
|
|
|
native rmdir(const path[]);
|
|
|
|
|
2007-08-07 04:54:22 +04:00
|
|
|
/* Returns 0 on success, like the POSIX specification */
|
|
|
|
native mkdir(const dirname[]);
|
|
|
|
|
|
|
|
|
2004-04-04 00:05:27 +04:00
|
|
|
//Delete a file (delete_file macro)
|
2006-04-10 18:02:37 +04:00
|
|
|
native unlink(const filename[]);
|
2004-04-04 00:05:27 +04:00
|
|
|
|
2005-07-14 03:30:28 +04:00
|
|
|
//Returns a handle to a directory
|
|
|
|
native open_dir(dir[], firstfile[], length);
|
|
|
|
native next_file(dirh, buffer[], length);
|
|
|
|
native close_dir(dirh);
|