Guest User

Untitled

a guest
Jan 19th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.55 KB | None | 0 0
  1. //====Headers
  2. #include <iso646.h>
  3. #include <assert.h>
  4. #include <limits.h>
  5. #include <stdbool.h>
  6. #include <locale.h>
  7. #include <setjmp.h>
  8. #include <signal.h>
  9. #include <stdarg.h>
  10. #include <stddef.h>
  11. #include <errno.h>
  12. #include <ctype.h>
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <string.h>
  16. #include <math.h>
  17. #include <float.h>
  18. #include <time.h>
  19. #include <gmp.h>   //using libgmp.a
  20. #include <mpfr.h>
  21. //======Types
  22. #define u1 unsigned char
  23. #define u2 unsigned short
  24. #define u4 unsigned int
  25. #define u8 unsigned long long
  26. #define s1 signed char
  27. #define s2 signed short
  28. #define s4 signed int
  29. #define s8 signed long long
  30. #define f2 short float
  31. #define f4 float
  32. #define f8 double
  33. #define f10 long double
  34. //====Bithacks
  35. #define setb(o,p) (o|=(1<<p))      //byte| 1<< pos  
  36. #define clrb(o,p) (o&=(~(1<<p)))  // byte | 11101111
  37. #define togb(o,p) (o^=(1<<p))
  38. #define chkb(o,p) ((o>>p)&1)
  39. #define bitchar(bitchar_bit)    (48|bitchar_bit) // 48|0 or 1
  40. //====Func
  41. static __inline__ u8 rdtsc(void){u8 x;
  42.  __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));     return x;}
  43.  
  44. u8 fsize(u1* filename){
  45. FILE* tfile=fopen(filename,"rb");
  46. if(!tfile){perror(filename);return 0;}
  47. fseek(tfile,0,SEEK_END);
  48. u8 sz=(u8)(ftell(tfile));fclose(tfile);return sz;}
  49.  
  50. u1* getcontent(u1*filename){//file to buffer
  51. u8 size=fsize(filename);//
  52. if(!size){perror("Zero length content"); return NULL;}
  53. u1* res=malloc(size);
  54. if(!res){perror("Malloc failure");return NULL;}
  55. FILE* inpfile=fopen(filename,"rb");
  56. if(!inpfile){perror("File cannot be read");return NULL;}
  57. u8 findex=(u8)fread(res,1,size,inpfile);fclose(inpfile);
  58. if(findex!=size){perror("size mismatch");return NULL;}
  59. return res;}
  60.  
  61.  
  62. void readcontent(u1* filename,u1* storage){
  63. if(!filename){perror("Invalid filename"); return;}
  64. u8 inpsize=fsize(filename);
  65. if(!inpsize){perror("File empty");return;}
  66. FILE* in=fopen(filename,"rb");
  67. if(!in){perror(filename);return;}
  68. storage=realloc(storage,inpsize);
  69. if(!storage){perror("Malloc failure");return;}
  70. u8 findex=(u8)fread(storage,1,inpsize,in);
  71. fclose(in);
  72. if(findex!=inpsize){perror("Read size mismatch");return;}}
  73.  
  74. void writecontent(u1* filename,u1* content,u8 size){
  75. FILE* out=fopen(filename,"wb");
  76. if(!out){perror(filename);return;}
  77. u8 findex=(u8)fwrite(content,1,size,out);fclose(out);
  78. if(findex!=size) perror("Write size mismatch");}
  79.  
  80. void buf2mpz(u1* string,mpz_t num,u8 size){
  81. if(!string){perror("NULL string");return;}
  82. if(!num){perror("Invalid mpz_t");return;}
  83. if(!size){perror("Zero-length string");return;}
  84. mpz_import(num,size, 1,1, -1, 0,string);
  85. }
Add Comment
Please, Sign In to add comment