⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atlconf_misc.c

📁 基于Blas CLapck的.用过的人知道是干啥的
💻 C
📖 第 1 页 / 共 2 页
字号:
/* *             Automatically Tuned Linear Algebra Software v3.8.0 *                    (C) Copyright 1998 R. Clint Whaley * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: *   1. Redistributions of source code must retain the above copyright *      notice, this list of conditions and the following disclaimer. *   2. Redistributions in binary form must reproduce the above copyright *      notice, this list of conditions, and the following disclaimer in the *      documentation and/or other materials provided with the distribution. *   3. The name of the ATLAS group or the names of its contributers may *      not be used to endorse or promote products derived from this *      software without specific written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ATLAS GROUP OR ITS CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * */#include "atlconf.h"#include <time.h>void GetDate(int *month, int *day, int *year, int *hour, int *min){   time_t tv;   struct tm *tp;   tv = time(NULL);   tp = localtime(&tv);   *month = tp->tm_mon + 1;   *day = tp->tm_mday;   *year = tp->tm_year + 1900;   *hour = tp->tm_hour;   *min = tp->tm_min;}long GetInt(FILE *fpin, long Default, char *spc, char *expstr)/* * Gets a signed integral type from fpin.  If nothing or garbage is entered, * Default is returned. */{   char str[64];   long iin;   if (expstr) fprintf(stdout, "%sEnter %s [%d]: ", spc, expstr, Default);   if (fgets(str, 64, fpin) == NULL) return(Default);   if (sscanf(str, " %ld ", &iin) != 1) return(Default);   return(iin);}long GetIntRange(long Default, long Min, long Max, char *spc, char *expstr){   long i;   int keepOn=0;   do   {      i = GetInt(stdin, Default, spc, expstr);      if (i > Max)      {         keepOn = 1;         fprintf(stderr, "\n%d larger than max value of %d.  Try again.\n\n",                 i, Max);      }      else if (i < Min)      {         keepOn = 1;         fprintf(stderr, "\n%d smaller than min value of %d.  Try again.\n\n",                 i, Min);      }      else keepOn = 0;   }   while (keepOn);   return(i);}long GetIntVer(long Default, long Min, long Max, char *spc, char *expstr){   long i, j;   do   {      i = GetIntRange(Default, Min, Max, spc, expstr);      fprintf(stdout, "%s   You entered: %d\n", spc, i);      j = GetIntRange(0, 0, 1, spc, "1 to reenter, 0 accepts");   }   while(j);   return(i);}void GetString(FILE *fpin, char *Default, char *spc, char *expstr,               int len, char *str0)/* * Get a string of length len, not including NULL terminator; pads * any extra len with NULLs */{   char str[512], *sp;   int i;   assert(len+1 <= 512);   if (expstr)   {      if (Default) fprintf(stdout, "%sEnter %s [%s]: ", spc, expstr, Default);      else fprintf(stdout, "%sEnter %s:", spc, expstr);   }   sp = fgets(str, 512, fpin);   if ( (sp == NULL) || (str[0] == '\0') || (str[0] == '\n') )   {      if (Default) strcpy(str0, Default);      else str0[0] = '\0';      return;   }   str[len] = '\0';   for (i=0; str0[i] = str[i]; i++);   if (i) i--;   while (Mciswspace(str0[i])) i--;   while (++i < len) str0[i] = '\0';   str0[i] = '\0';}void GetStrVer(char *def, char *spc, char *expstr, int len, char *str){   int i;   do   {      GetString(stdin, def, spc, expstr, len, str);      fprintf(stdout, "%sYou have entered '%s'\n", spc, str);      i = GetIntRange(0, 0, 1, spc, "1 to reenter, 0 to accept");   }   while(i);}int IsYes(char def, char *spc, char *expstr){   char ch, ln[256];   fprintf(stdout, "%s%s [%c]: ", spc, expstr, def);   if (fgets(ln, 256, stdin) == NULL) ch=def;   else if (ln[0] == '\0' || ln[0] == '\n') ch=def;   else ch = ln[0];   return( ((ch == 'y') || (ch == 'Y')) );}char GetChar(char def, char *spc, char *expstr){   char ch, ln[256];   fprintf(stdout, "%s%s [%c]: ", spc, expstr, def);   if (fgets(ln, 256, stdin) == NULL) ch=def;   else if (ln[0] == '\0' || ln[0] == '\n') ch=def;   else ch = ln[0];   return(ch);}int FileIsThere(char *nam){   FILE *fp;   fp = fopen(nam, "r");   if (fp == NULL) return(0);   fclose(fp);   return(1);}#include <stdarg.h>#define ATL_UseStringVarArgsvoid ATL_mprintf(int np, ...)/* * Prints same message to np output file streams */{   va_list argptr;   FILE *fp[8];   char *form;   int i;   #ifdef ATL_UseStringVarArgs      char ln[1024];   #endif   if (np > 0)   {      va_start(argptr, np);      assert(np <= 8);      for (i=0; i < np; i++) fp[i] = va_arg(argptr, FILE *);      form = va_arg(argptr, char *);      #ifdef ATL_UseStringVarArgs         vsprintf(ln, form, argptr);         assert(strlen(ln) < 1024);/* sanity test only, will not stop overrun */         va_end(argptr);         for (i=0; i < np; i++) if (fp[i]) fprintf(fp[i], ln);      #else         for (i=0; i < np; i++) if (fp[i]) vfprintf(fp[i], form, argptr);         va_end(argptr);      #endif   }}int GetFirstInt(char *ln){   int i, iret=0;   for (i=0; ln[i]; i++)   {      if (isdigit(ln[i]))      {         sscanf(ln+i, "%d", &iret);         break;      }   }   return(iret);}long long GetFirstLong(char *ln){   int i;   long long iret=0;   for (i=0; ln[i]; i++)   {      if (isdigit(ln[i]))      {         sscanf(ln+i, "%ld", &iret);         break;      }   }   return(iret);}double GetFirstDouble(char *ln)/* * Gets a double, which begins wt digit or "." (i.e., won't get e10) */{   int i;   double dret=0;   for (i=0; ln[i]; i++)   {      if (isdigit(ln[i]))      {         if (i > 0 && ln[i-1] == '.') i--;         sscanf(ln+i, "%lf", &dret);         break;      }   }   return(dret);}int GetLastInt(char *ln){   int i, iret=0;   for (i=0; ln[i]; i++);   if (i > 0) for (i--; i > 0 && !isdigit(ln[i]); i--);   if (i > 0 || (i == 0 && isdigit(ln[0])))   {      while(isdigit(ln[i]) && i > 0) i--;      if (!isdigit(ln[i])) i++;      sscanf(ln+i, "%d", &iret);   }   return(iret);}long long GetLastLong(char *ln){   int i;   long iret=0;   for (i=0; ln[i]; i++);   if (i > 0) for (i--; i > 0 && !isdigit(ln[i]); i--);   if (i > 0 || (i == 0 && isdigit(ln[0])))   {      while(isdigit(ln[i]) && i > 0) i--;      if (!isdigit(ln[i])) i++;      sscanf(ln+i, "%ld", &iret);   }   return(iret);}int fNumLines(char *fnam){   FILE *fp;   char ln[256];   int i;   fp = fopen(fnam, "r");   assert(fp != NULL);   for (i=0; fgets(ln, 256, fp); i++);   return(i);}char *CmndResults(char *targ, char *cmnd){   static char tnam[128];   static int FirstTime=1;   char ln[512];   if (FirstTime)   {      FirstTime = 0;      assert(tmpnam(tnam));   }   if (targ) sprintf(ln, "ssh %s \"%s\" > %s 2>&1 \n", targ, cmnd, tnam);   else sprintf(ln, "%s > %s 2>&1\n", cmnd, tnam);   if (!system(ln)) return(tnam);   else return(NULL);}int CmndOneLine(char *targ, char *cmnd, char *ln)/* * executes a system call with contents of cmnd, returns the output in ln; * Returns value returned by system call * if targ is set, we ssh to that machine */{   int i;   FILE *fp;   char *tnam;   ln[0] = '\0';   tnam = CmndResults(targ, cmnd);   if (tnam)   {      fp = fopen(tnam, "r");      assert(fp);      if (!fgets(ln, 2048, fp)) ln[0] = '\0';      fclose(fp);      return(0);   }   else ln[0] = '\0';   return(1);}int GetIntBeforeWord(char *word, char *ln)/* * Finds integer before word in sentence. * RETURNS: integer on success, BADINT on failure */{   char *sp;   sp = strstr(ln, word);   if (sp == ln) return(BADINT);   sp--;   while(isspace(*sp) && sp != ln) sp--;   if (sp == ln) return(BADINT);   while (isdigit(*sp) && sp != ln) sp--;   if (sp == ln) return(BADINT);   return(atoi(sp));}int GetScreenHeight()/* * Returns the number of vertical lines window has */{   int i;   for (i=160; i; i--) fprintf(stdout, "%03d\n", i);   i = GetIntRange(0, 0, 160, "", "number at top left of screen");   return(i);}void GetEnter(FILE *fpout){   char ln[128];   fprintf(fpout, "---------- PRESS ENTER TO CONTINUE ---------- ");   fgets(ln, 128, stdin);}int DisplayFile(char *fnam, FILE *fpout, int nlines){   FILE *fp;   char ln[256];   int i, GoOn=1;   fp = fopen(fnam, "r");   if (fp == NULL)   {      fprintf(stderr, "Unable to open file '%s', continuing without display.\n",              fnam);      return(-1);   }   if (nlines)   {      do      {         for (i=0; i < nlines; i++)         {            GoOn = (fgets(ln, 256, fp) != NULL);            if (!GoOn) break;            fprintf(fpout, "%s", ln);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -