FACT++  1.0
void did_read_string ( char  type,
int  num,
void **  buffer_ptr,
char **  str_ptr 
)

Definition at line 2055 of file did.c.

References i, read_str_char(), and read_str_int().

Referenced by did_prepare_command().

2056 {
2057 int i, ret = 0;
2058 float ff;
2059 double dd;
2060 void *ptr;
2061 char *strp, *ptr1;
2062 char cc;
2063  short s;
2064 
2065  strp = *str_ptr;
2066  ptr = *buffer_ptr;
2067  if(!num)
2068  num = 1000000;
2069  switch(type)
2070  {
2071  case 'L':
2072  case 'l':
2073  case 'I':
2074  case 'i':
2075  for(i = 0; i<num; i++)
2076  {
2077  *(int *)ptr = read_str_int(strp);
2078  ptr = (int *)ptr +1;
2079  if( (strp = strchr(strp,' ')) )
2080  strp++;
2081  else
2082  break;
2083  }
2084  break;
2085  case 'S':
2086  case 's':
2087  for(i = 0; i<num; i++)
2088  {
2089  s = (short)read_str_int(strp);
2090  *((short *)ptr) = s;
2091  ptr = (short *)ptr +1;
2092  if( (strp = strchr(strp,' ')) )
2093  strp++;
2094  else
2095  break;
2096  }
2097  break;
2098  case 'F':
2099  case 'f':
2100  for(i = 0; i<num; i++)
2101  {
2102  sscanf(strp,"%f",&ff);
2103  *(float *)ptr = ff;
2104  ptr = (float *)ptr +1;
2105  if( (strp = strchr(strp,' ')) )
2106  strp++;
2107  else
2108  break;
2109  }
2110  break;
2111  case 'D':
2112  case 'd':
2113  for(i = 0; i<num; i++)
2114  {
2115  sscanf(strp,"%f",&ff);
2116  dd = (double)ff;
2117  *(double *)ptr = dd;
2118  ptr = (double *)ptr +1;
2119  if( (strp = strchr(strp,' ')) )
2120  strp++;
2121  else
2122  break;
2123  }
2124  break;
2125  case 'C':
2126  case 'c':
2127  default:
2128  for(i = 0; i<num; i++)
2129  {
2130  if((ret = read_str_char(strp, &cc)) <= 0)
2131  break;
2132  *(char *)ptr = cc;
2133  ptr = (char *)ptr +1;
2134  if( (strp = strchr(strp,' ')) )
2135  strp++;
2136  else
2137  break;
2138  }
2139  if(ret <= 0)
2140  {
2141  if(!ret)
2142  {
2143  strp++;
2144  }
2145  num = (int)strlen(strp)+1;
2146  strncpy((char *)ptr,strp,(size_t)num);
2147  if( (ptr1 = (char *)strchr((char *)ptr,'\"')) )
2148  {
2149  num--;
2150  *ptr1 = '\0';
2151  }
2152  ptr = (char *)ptr + num;
2153  if( (strp = strchr(strp,' ')) )
2154  strp++;
2155  else
2156  break;
2157  }
2158  }
2159  *buffer_ptr = ptr;
2160  *str_ptr = strp;
2161 }
int i
Definition: db_dim_client.c:21
int read_str_char(char *str, char *cc)
Definition: did.c:2039
int read_str_int(char *str)
Definition: did.c:2029
int type

+ Here is the call graph for this function:

+ Here is the caller graph for this function: