X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_head.c;h=2d26ca3b379b236f1e1a6f8104a0f1a4b9b0dd0d;hb=f31e09e4be70ced5efbf4394d7ee5eb66d3bae47;hp=d56b52607748051ca1c7cee1e6e326021918bc27;hpb=5e15fd0dadb195739e333d5d49acfdef1a42074b;p=16.git diff --git a/src/lib/16_head.c b/src/lib/16_head.c old mode 100644 new mode 100755 index d56b5260..2d26ca3b --- a/src/lib/16_head.c +++ b/src/lib/16_head.c @@ -1,32 +1,26 @@ -/* Project 16 Source Code~ - * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 - * - * This file is part of Project 16. - * - * Project 16 is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * Project 16 is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see , or - * write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - -#include "src/lib/16_head.h" - -/* local function */ -void wait(clock_t wait); -void* AllocateLargestFreeBlock(size_t* Size); -size_t GetFreeSize(void); -long int filesize(FILE *fp); +/* Project 16 Source Code~ + * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 + * + * This file is part of Project 16. + * + * Project 16 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Project 16 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see , or + * write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include "src/lib/16_head.h" /* Function: Wait ********************************************************** * @@ -42,82 +36,9 @@ void wait(clock_t wait){ goal = wait + clock(); while((goal > clock()) && !kbhit()) ; -} /* End of wait */ - -void* AllocateLargestFreeBlock(size_t* Size) -{ - size_t s0, s1; - void* p; - - s0 = ~(size_t)0 ^ (~(size_t)0 >> 1); - - while (s0 && (p = malloc(s0)) == NULL) - s0 >>= 1; - - if (p) - free(p); - - s1 = s0 >> 1; - - while (s1) - { - if ((p = malloc(s0 + s1)) != NULL) - { - s0 += s1; - free(p); - } - s1 >>= 1; - } - - while (s0 && (p = malloc(s0)) == NULL) - s0 ^= s0 & -s0; - - *Size = s0; - return p; -} - -size_t GetFreeSize(void) -{ - size_t total = 0; - void* pFirst = NULL; - void* pLast = NULL; - - for (;;) - { - size_t largest; - void* p = AllocateLargestFreeBlock(&largest); - - if (largest < sizeof(void*)) - { - if (p != NULL) - free(p); - break; - } - - *(void**)p = NULL; - - total += largest; - - if (pFirst == NULL) - pFirst = p; - - if (pLast != NULL) - *(void**)pLast = p; - - pLast = p; - } - - while (pFirst != NULL) - { - void* p = *(void**)pFirst; - free(pFirst); - pFirst = p; - } - - return total; -} - -long int +} /* End of wait */ + +long int filesize(FILE *fp) { long int save_pos, size_of_file; @@ -127,8 +48,18 @@ filesize(FILE *fp) size_of_file = ftell(fp); fseek(fp, save_pos, SEEK_SET); return(size_of_file); -} - +} + +void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free) +{ + byte str[64]; + strcat(strc,pee); strcat(strc," "); ultoa((dword)h_total,str,10); strcat(strc,str); + if(strlen(str)<=4) strcat(strc," "); //printf("%u\n", strlen(str)); + strcat(strc," "); ultoa((dword)h_used,str,10); strcat(strc,str); strcat(strc," "); strcat(strc," "); + ultoa((dword)h_free,str,10); strcat(strc,str); + strcat(strc,"\n"); +} + /////////////////////////////////////////////////////////////////////////// // // US_CheckParm() - checks to see if a string matches one of a set of @@ -162,4 +93,67 @@ US_CheckParm(char *parm,char **strings) } } return(-1); -} +} + +/* +========================== += += Quit += +========================== +*/ + +/*void Quit(char *error, ...) +{ + short exit_code=0; + unsigned finscreen; + + va_list ap; + + va_start(ap,error); + +#ifndef CATALOG + if (!error) + { + CA_SetAllPurge (); + CA_CacheGrChunk (PIRACY); + finscreen = (unsigned)grsegs[PIRACY]; + } +#endif + + //ShutdownId (); + + if (error && *error) + { + vprintf(error,ap); + exit_code = 1; + } +#ifndef CATALOG + else + if (!NoWait) + { + movedata (finscreen,0,0xb800,0,4000); + bioskey (0); + } +#endif + + va_end(ap); + +#ifndef CATALOG + if (!error) + { + _argc = 2; + _argv[1] = "LAST.SHL"; + _argv[2] = "ENDSCN.SCN"; + _argv[3] = NULL; + if (execv("LOADSCN.EXE", _argv) == -1) + { + clrscr(); + puts("Couldn't find executable LOADSCN.EXE.\n"); + exit(1); + } + } +#endif + + exit(exit_code); +}*/