• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/OpenSSH-189/osslshim/ossl-asn1/

Lines Matching refs:st

151 int sk_insert(STACK *st, char *data, int loc)
155 if(st == NULL) return 0;
156 if (st->num_alloc <= st->num+1)
158 s=(char **)realloc((char *)st->data,
159 (unsigned int)sizeof(char *)*st->num_alloc*2);
162 st->data=s;
163 st->num_alloc*=2;
165 if ((loc >= (int)st->num) || (loc < 0))
166 st->data[st->num]=data;
172 f=(char **)st->data;
173 t=(char **)&(st->data[1]);
174 for (i=st->num; i>=loc; i--)
178 memmove( (char *)&(st->data[loc+1]),
179 (char *)&(st->data[loc]),
180 sizeof(char *)*(st->num-loc));
182 st->data[loc]=data;
184 st->num++;
185 st->sorted=0;
186 return(st->num);
189 char *sk_delete_ptr(STACK *st, char *p)
193 for (i=0; i<st->num; i++)
194 if (st->data[i] == p)
195 return(sk_delete(st,i));
199 char *sk_delete(STACK *st, int loc)
204 if(!st || (loc < 0) || (loc >= st->num)) return NULL;
206 ret=st->data[loc];
207 if (loc != st->num-1)
209 j=st->num-1;
211 st->data[i]=st->data[i+1];
213 * memcpy( &(st->data[loc]),
214 * &(st->data[loc+1]),
215 * sizeof(char *)*(st->num-loc-1));
218 st->num--;
222 static int internal_find(STACK *st, char *data, int ret_val_options)
227 if(st == NULL) return -1;
229 if (st->comp == NULL)
231 for (i=0; i<st->num; i++)
232 if (st->data[i] == data)
236 sk_sort(st);
244 comp_func=(int (*)(const void *,const void *))(st->comp);
245 r=(char **)OBJ_bsearch_ex((char *)&data,(char *)st->data,
246 st->num,sizeof(char *),comp_func,ret_val_options);
248 return((int)(r-st->data));
251 int sk_find(STACK *st, char *data)
253 return internal_find(st, data, OBJ_BSEARCH_FIRST_VALUE_ON_MATCH);
255 int sk_find_ex(STACK *st, char *data)
257 return internal_find(st, data, OBJ_BSEARCH_VALUE_ON_NOMATCH);
260 int sk_push(STACK *st, char *data)
262 return(sk_insert(st,data,st->num));
265 int sk_unshift(STACK *st, char *data)
267 return(sk_insert(st,data,0));
270 char *sk_shift(STACK *st)
272 if (st == NULL) return(NULL);
273 if (st->num <= 0) return(NULL);
274 return(sk_delete(st,0));
277 char *sk_pop(STACK *st)
279 if (st == NULL) return(NULL);
280 if (st->num <= 0) return(NULL);
281 return(sk_delete(st,st->num-1));
284 void sk_zero(STACK *st)
286 if (st == NULL) return;
287 if (st->num <= 0) return;
288 memset((char *)st->data,0,sizeof(st->data)*st->num);
289 st->num=0;
292 void sk_pop_free(STACK *st, void (*func)(void *))
296 if (st == NULL) return;
297 for (i=0; i<st->num; i++)
298 if (st->data[i] != NULL)
299 func(st->data[i]);
300 sk_free(st);
303 void sk_free(STACK *st)
305 if (st == NULL) return;
306 if (st->data != NULL) free(st->data);
307 free(st);
310 int sk_num(const STACK *st)
312 if(st == NULL) return -1;
313 return st->num;
316 char *sk_value(const STACK *st, int i)
318 if(!st || (i < 0) || (i >= st->num)) return NULL;
319 return st->data[i];
322 char *sk_set(STACK *st, int i, char *value)
324 if(!st || (i < 0) || (i >= st->num)) return NULL;
325 return (st->data[i] = value);
328 void sk_sort(STACK *st)
330 if (st && !st->sorted)
334 /* same comment as in sk_find ... previously st->comp was declared
339 comp_func=(int (*)(const void *,const void *))(st->comp);
340 qsort(st->data,st->num,sizeof(char *), comp_func);
341 st->sorted=1;
345 int sk_is_sorted(const STACK *st)
347 if (!st)
349 return st->sorted;