[go: up one dir, main page]

File: pair_picking.c

package info (click to toggle)
circlepack 5.1-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny, sarge
  • size: 2,828 kB
  • ctags: 1,683
  • sloc: ansic: 43,152; makefile: 46
file content (29 lines) | stat: -rw-r--r-- 858 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "cp_types.h"
#include "cp_proto.h"

/* return string between start_char and end_char. NULL means none found. */

char *pair_picking(char *datastr,char start_char,char end_char,char **endptr)
{
  int n=0,m=0;
  char *expression;

  while (*(datastr+n)!='\0' 
	 && *(datastr+n)!=start_char) n++;
  if (*(datastr+n)=='\0') /* no start_char */
    { *endptr=datastr; return NULL;}
  n++;
  while (*(datastr+n+m)!='\0'
	 && *(datastr+n+m)!=end_char) m++;
  if (*(datastr+n+m)=='\0') /* no end_char */
    { *endptr=datastr+n; return NULL;}
  if (m==0) /* empty string */
    { *endptr=datastr+n+1;return NULL;}
  if (m>1023) /* too big */
    { *endptr=datastr+n-1;return NULL;}
  expression=(char *)malloc((m+1)*sizeof(char));
  strncpy(expression,datastr+n,m);
  *(expression+m)='\0';
  *endptr=datastr+n+m+1;
  return expression;
} /* pair_picking */