Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- * (c) Copyright by jC-Team 2010
- * All rights reserved / Âñå ïðàâà çàùèùåíû
- *
- */
- #define crypt(%0) \
- for ( new c = 1; %0[c] != 0; c++ ) %0[c] -= %0[0] / ( 10 + c ); %0[0]--
- #define decrypt(%0) \
- %0[0]++; for ( new c = 1; %0[c] != 0; c++ ) %0[c] += %0[0] / ( 10 + c )
- enum x_error {
- /*
- Если ошибки не обнаружено, то функция вернёт
- число из no_error.
- */
- no_error = 1, //
- /*
- Если файл не обнаружен, то функция вернёт
- число из file_no_exist.
- */
- file_no_exist = -1, //
- /*
- Если размер файла больше размера буфера, то функция вернёт
- число из file_long_length.
- */
- file_long_length = -2 //
- };
- enum x_method {
- /*
- Метод шифровки файла.
- */
- file_crypt = 1, //
- /*
- Метод дешифровки файла.
- */
- file_decrypt = 2, //
- };
- const
- /*
- Максимальный размер буфера, если длина файла будет больше чем
- размер буфера, функция вернёт ошибку.
- */
- MAX_BUFFER_SIZE = 1024,
- bool:UTF_8 = false;
- new
- File: x_File,
- x_buffer[ MAX_BUFFER_SIZE ],
- x_idx = 0;
- stock fhash(name[], hash_method = x_method:file_crypt) {
- x_File=fopen(name, io_readwrite);
- if(!fexist(name)) {
- return x_error:file_no_exist;
- }
- if(flength(x_File) > MAX_BUFFER_SIZE) {
- return x_error:file_long_length;
- }
- for(x_idx=0; x_idx<flength(x_File); x_idx++) {
- x_buffer[x_idx]=fgetchar(x_File, x_idx, UTF_8);
- }
- fclose(x_File);
- fremove(name);
- switch(hash_method) {
- case file_crypt: {crypt(x_buffer);} // Любая ваша шифрующая функция!
- case file_decrypt: {decrypt(x_buffer);} // Любая ваша дешифрующая функция!
- }
- x_File=fopen(name, io_readwrite);
- for(x_idx=0; x_idx<strlen(x_buffer); x_idx++) {
- fputchar(x_File, x_buffer[x_idx], UTF_8);
- }
- fclose(x_File);
- return x_error:no_error;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement