Example #1
0
int
clip_CHARAND(ClipMachine * ClipMachineMemory)
{
   int l1, l2;

   unsigned char *ret, *e, *end, *e2, *end2;

   unsigned char *str = (unsigned char *) _clip_parcl(ClipMachineMemory, 1, &l1);

   unsigned char *s = (unsigned char *) _clip_parcl(ClipMachineMemory, 2, &l2);

   int rset = (*(char *) (_clip_fetch_item(ClipMachineMemory, HASH_csetref)) == 't');

   if (str == NULL || s == NULL)
   {
      _clip_retc(ClipMachineMemory, "");
      return _clip_trap_err(ClipMachineMemory, EG_ARG, 0, 0, __FILE__, __LINE__, "CHARAND");
   }
   ret = malloc(l1 + 1);
   memcpy(ret, str, l1);
   ret[l1] = 0;
   end2 = s + l2;
   for (e = ret, end = ret + l1; e < end;)
      for (e2 = s; e2 < end2 && e < end; e++, e2++)
	 *e = (*e & *e2);
   if (rset && _clip_par_isref(ClipMachineMemory, 1))
      _clip_par_assign_str(ClipMachineMemory, 1, (char *) ret, l1);
   _clip_retcn_m(ClipMachineMemory, (char *) ret, l1);
   return 0;
}
Example #2
0
int
clip_FREAD(ClipMachine * ClipMachineMemory)
{
#if 0
   int ret, *err, bl;

   int fh = _clip_parni(ClipMachineMemory, 1);

   char *buf = _clip_parcl(ClipMachineMemory, 2, &bl);

   int kol = _clip_parni(ClipMachineMemory, 3);

   if (bl < kol)
      kol = bl;

   ret = read(fh, buf, kol);
   err = _clip_fetch_item(ClipMachineMemory, HASH_ferror);

   if (ret < 0)
      *err = errno;
   else
      *err = 0;
#else
   int *err = _clip_fetch_item(ClipMachineMemory, HASH_ferror);

   int fd = _clip_parni(ClipMachineMemory, 1), lenbuf = 0;

   char *buf = _clip_parcl(ClipMachineMemory, 2, &lenbuf);

   long ret = -1, nb = _clip_parnl(ClipMachineMemory, 3);

   C_FILE *cf = _clip_fetch_c_item(ClipMachineMemory, fd, _C_ITEM_TYPE_FILE);

   _clip_retnl(ClipMachineMemory, -1);

   if (cf == NULL)
   {
      *err = EBADF;
      return 0;
   }

   if (lenbuf < nb)
      nb = lenbuf;

   if (nb > 0)
   {
      if (cf->file_of_C_FILE == NULL || (cf->stat_of_C_FILE & FS_BUFFERED) == 0)
	 ret = _clip_read(cf, buf, nb);
      else
	 ret = fread(buf, 1, nb, cf->file_of_C_FILE);
   }
   else
      ret = 0;

   *err = ret < 0 ? errno : 0;
#endif

   _clip_retnl(ClipMachineMemory, ret);
   return 0;
}
Example #3
0
int
clip_STRSWAP(ClipMachine * ClipMachineMemory)
{
   int l1, l2, l, i;

   unsigned char ch;

   unsigned char *s1 = (unsigned char *) _clip_parcl(ClipMachineMemory, 1, &l1);

   unsigned char *s2 = (unsigned char *) _clip_parcl(ClipMachineMemory, 2, &l2);

   if (s1 == NULL || s2 == NULL)
   {
      _clip_retc(ClipMachineMemory, "");
      return _clip_trap_err(ClipMachineMemory, EG_ARG, 0, 0, __FILE__, __LINE__, "STRSWAP");
   }
   l = l1 < l2 ? l1 : l2;
   for (i = 0; i < l; i++)
   {
      ch = s1[i];
      s1[i] = s2[i];
      s2[i] = ch;
   }
   _clip_retc(ClipMachineMemory, "");
   return 0;
}
Example #4
0
int
clip_WORDONLY(ClipMachine * ClipMachineMemory)
{
   int l1, l2, i = 0;

   short *ret, *e1, *end1, *e2, *end2;

   short *str1 = (short *) _clip_parcl(ClipMachineMemory, 1, &l1);

   short *str2 = (short *) _clip_parcl(ClipMachineMemory, 2, &l2);

   if (str1 == NULL || str2 == NULL)
   {
      _clip_retc(ClipMachineMemory, "");
      return _clip_trap_err(ClipMachineMemory, EG_ARG, 0, 0, __FILE__, __LINE__, "WORDONLY");
   }
   l1 = l1 >> 1;
   l2 = l2 >> 1;
   ret = malloc((l2 + 1) * 2);
   for (e2 = str2, end2 = str2 + l2; e2 < end2; e2++)
   {
      for (e1 = str1, end1 = str1 + l1; e1 < end1 && *e2 != *e1; e1++);
      if (*e1 != *e2)
	 continue;
      ret[i] = *e2;
      i++;
   }
   ret[i] = 0;
   _clip_retcn_m(ClipMachineMemory, (char *) ret, i * 2);
   return 0;
}
Example #5
0
int
clip_BEFORATNUM(ClipMachine * ClipMachineMemory)
{
   int l, l1, l2;

   unsigned char *ret, *beg;

   unsigned char *sstr = (unsigned char *) _clip_parcl(ClipMachineMemory, 1, &l1);

   unsigned char *str = (unsigned char *) _clip_parcl(ClipMachineMemory, 2, &l2);

   int count = _clip_parni(ClipMachineMemory, 3);

   int ignore = _clip_parni(ClipMachineMemory, 4);

   if (sstr == NULL || str == NULL)
   {
      _clip_retc(ClipMachineMemory, "");
      return _clip_trap_err(ClipMachineMemory, EG_ARG, 0, 0, __FILE__, __LINE__, "BEFORATNUM");
   }
   beg = _clip_atmupa(ClipMachineMemory, sstr, l1, str, l2, ignore, count, 1);
   l = beg - str;
   ret = malloc(l + 1);
   memcpy(ret, str, l);
   ret[l] = 0;
   _clip_retcn_m(ClipMachineMemory, (char *) ret, l);
   return 0;
}
Example #6
0
int
clip_CHARMIX(ClipMachine * ClipMachineMemory)
{
   int l1, l2, i;

   unsigned char *ret;

   unsigned char *str1 = (unsigned char *) _clip_parcl(ClipMachineMemory, 1, &l1);

   unsigned char *str2 = (unsigned char *) _clip_parcl(ClipMachineMemory, 2, &l2);

   if (str1 == NULL || str2 == NULL)
   {
      _clip_retc(ClipMachineMemory, "");
      return _clip_trap_err(ClipMachineMemory, EG_ARG, 0, 0, __FILE__, __LINE__, "CHARMIX");
   }
   if (l2 == 0)
   {
      _clip_retcn(ClipMachineMemory, (char *) str1, l1);
      return 0;
   }

   ret = malloc(l1 * 2 + 1);
   for (i = 0; i < l1; i++)
   {
      ret[i * 2] = str1[i % l1];
      ret[i * 2 + 1] = str2[i % l2];
   }
   ret[l1 * 2] = 0;
   _clip_retcn_m(ClipMachineMemory, (char *) ret, l1 * 2);
   return 0;
}
Example #7
0
int clip_PG_IN_DATETIME(ClipMachine* mp){
	PG_ROWSET* rowset = (PG_ROWSET*)_clip_fetch_c_item(
		mp,_clip_parni(mp,1),_C_ITEM_TYPE_SQL);
	char* date;
	long dd,tt;

	if(!rowset){
		_clip_trap_err(mp,0,0,0,subsys,ER_NOROWSET,er_norowset);
		return 1;
	}
	if(rowset->binary){
		double d;
		int l;

		date = _clip_parcl(mp,2,&l);
		d = *(double*)date;
		dd = _clip_jdate(1,1,2000)+d/(24*60*60);
		tt = ((long long)d*1000) % (24*60*60*1000);
		if(tt < 0)
			tt += 24*60*60*1000;
		_clip_retdtj(mp,dd,tt);
	} else {
		int l;
		date = _clip_parcl(mp,2,&l);
		_pg_in_iso_datetime(date,l,&dd,&tt);
		_clip_retdtj(mp,dd,tt);
	}
	return 0;
}
Example #8
0
int
clip_CHARREM(ClipMachine * ClipMachineMemory)
{
   int l, l1, l2, i;

   unsigned char *ret, *e, *end, *s;

   unsigned char *str1 = (unsigned char *) _clip_parcl(ClipMachineMemory, 1, &l1);

   unsigned char *str2 = (unsigned char *) _clip_parcl(ClipMachineMemory, 2, &l2);

   if (str1 == NULL || str2 == NULL)
   {
      _clip_retc(ClipMachineMemory, "");
      return _clip_trap_err(ClipMachineMemory, EG_ARG, 0, 0, __FILE__, __LINE__, "CHARREM");
   }
   l = l2;
   ret = malloc(l + 1);
   s = calloc(256, 1);
   for (e = str1, end = str1 + l1; e < end; e++)
      s[(int) (*e)] = 1;
   for (i = 0, e = str2, end = str2 + l2; e < end; e++)
   {
      if (s[(int) (*e)] == 1)
	 continue;
      ret[i] = *e;
      i++;
   }
   free(s);
   ret[i] = 0;
   _clip_retcn_m(ClipMachineMemory, (char *) ret, i);
   return 0;
}
Example #9
0
int
clip_COUNTRIGHT(ClipMachine * ClipMachineMemory)
{
   int l1, l2, ret = 0;

   unsigned char *e;

   unsigned char *str = (unsigned char *) _clip_parcl(ClipMachineMemory, 1, &l1);

   unsigned char *s = (unsigned char *) _clip_parcl(ClipMachineMemory, 2, &l2);

   int ch = _clip_parni(ClipMachineMemory, 2);

   if (str == NULL || l1 == 0)
   {
      _clip_retni(ClipMachineMemory, 0);
      return _clip_trap_err(ClipMachineMemory, EG_ARG, 0, 0, __FILE__, __LINE__, "COUNTRIGHT");
   }
   if (s != NULL)
      ch = *s;
   if (ch == 0)
      ch = ' ';

   for (ret = 0, e = str + l1 - 1; e > str && *e == ch; e--, ret++);

   _clip_retni(ClipMachineMemory, ret);
   return 0;
}
Example #10
0
int
clip_STRFINDBOL(ClipMachine * ClipMachineMemory)
{
   int i, sl;

   char *s = _clip_parcl(ClipMachineMemory, 1, &sl);

   int begpos = _clip_parni(ClipMachineMemory, 2);

   if (s == NULL)
   {
      _clip_retni(ClipMachineMemory, 0);
      return 0;
   }
   if (begpos < 1 || begpos > sl)
      begpos = sl + 1;

   begpos--;
   if (s[begpos] == '\n')
      begpos--;
   for (i = begpos; i >= 0; i--)
   {
      if (s[i] == '\n')
      {
	 i++;
	 break;
      }
   }
   _clip_retni(ClipMachineMemory, i + 1);
   return 0;
}
Example #11
0
int
clip_CHARSWAP(ClipMachine * ClipMachineMemory)
{
   int l, i;

   unsigned char *ret, ch;

   unsigned char *str = (unsigned char *) _clip_parcl(ClipMachineMemory, 1, &l);

   int rset = (*(char *) (_clip_fetch_item(ClipMachineMemory, HASH_csetref)) == 't');

   if (str == NULL)
   {
      _clip_retc(ClipMachineMemory, "");
      return _clip_trap_err(ClipMachineMemory, EG_ARG, 0, 0, __FILE__, __LINE__, "CHARSWAP");
   }
   ret = str;
   ret = malloc(l + 1);
   for (i = 0; i < l; i += 2)
   {
      if (i < l - 1)
      {
	 ch = str[i];
	 ret[i] = str[i + 1];
	 ret[i + 1] = ch;
      }
      else
	 ret[i] = str[i];
   }
   ret[l] = 0;
   if (rset && _clip_par_isref(ClipMachineMemory, 1))
      _clip_par_assign_str(ClipMachineMemory, 1, (char *) ret, l);
   _clip_retcn_m(ClipMachineMemory, (char *) ret, l);
   return 0;
}
Example #12
0
int
clip_STRFINDEOL(ClipMachine * ClipMachineMemory)
{
   int i, sl;

   char *s = _clip_parcl(ClipMachineMemory, 1, &sl);

   int begpos = _clip_parni(ClipMachineMemory, 2);

   if (s == NULL)
   {
      _clip_retni(ClipMachineMemory, 0);
      return 0;
   }
   if (begpos < 1)
      begpos = 1;
   for (i = begpos - 1; i < sl; i++)
   {
      if (s[i] == '\n')
      {
	 i++;
	 break;
      }
   }
   _clip_retni(ClipMachineMemory, i + 1);
   return 0;
}
Example #13
0
int clip_PG_OUT_TIMESTAMP(ClipMachine* mp){
	PG_ROWSET* rowset = (PG_ROWSET*)_clip_fetch_c_item(
		mp,_clip_parni(mp,1),_C_ITEM_TYPE_SQL);
	int totext = _clip_parl(mp,3);
	struct tm time;
	time_t bindate;
	char* date;
	int len;

	if(!rowset){
		_clip_trap_err(mp,0,0,0,subsys,ER_NOROWSET,er_norowset);
		return 1;
	}
	if((!totext)&&rowset->binary){
		
		memset(&time,0,sizeof(time));
		_clip_pardc(mp,2,&time.tm_year,&time.tm_mon,&time.tm_mday,&time.tm_wday);
		time.tm_year -= 1900;
		time.tm_mon--;

		bindate = mktime(&time);
		_clip_retcn(mp,(char*)(&bindate),4);
	} else {
		date = _clip_parcl(mp,2,&len);
	        _clip_retc(mp,date);

//		char str[25];
//		_pg_out_date(mp,str,rowset->conn->datestyle,rowset->conn->textdate,_clip_pardj(mp,2));
//		_clip_retc(mp,str);
	}
	return 0;
}
Example #14
0
int
clip_LEFT(ClipMachine * ClipMachineMemory)
{
   int vl = 0;

   int i;

   char *rp;

   char *vp = _clip_parcl(ClipMachineMemory, 1, &vl);

   int nl = _clip_parni(ClipMachineMemory, 2);

   _clip_retc(ClipMachineMemory, "");
   if (vp == NULL)
      return 0;
   if (nl < 0)
      nl = 0;
   if (nl > vl)
      nl = vl;

   rp = malloc(nl + 1);
   if (nl > vl)
      nl = vl;
   for (i = 0; i < nl; i++)
      rp[i] = vp[i];
   rp[i] = 0;
   _clip_retcn_m(ClipMachineMemory, rp, nl);
   return 0;
}
Example #15
0
int
clip_BITTOC(ClipMachine * mp)
{
	unsigned int Num = _clip_parni(mp, 1);
	int LenPattern;
	char *BitPattern = _clip_parcl(mp, 2, &LenPattern);
	char *p, res[] = "                ";
	unsigned int Mask;
	int Len = _clip_parinfo(mp, 0), RealLen;
	int t1 = _clip_parinfo(mp, 1);
	int t2 = _clip_parinfo(mp, 2);

	if (Len < 2 || t1 != NUMERIC_t || t2 != CHARACTER_t)
	{
		_clip_retc(mp, "");
		return _clip_trap_err(mp, EG_ARG, 0, 0, __FILE__, __LINE__, "BITTOC");
	}

	if (LenPattern > 16)
		LenPattern = 16;
	if (_clip_parl(mp, 3))
	{
		for (RealLen = LenPattern, Len = 0, Mask = 1 << (LenPattern - 1); Len < LenPattern; Mask >>= 1, Len++)
			if (Num & Mask)
				res[Len] = BitPattern[Len];
	}
	else
	{
		for (RealLen = 0, p = res, Len = 0, Mask = 1 << (LenPattern - 1); Len < LenPattern; Mask >>= 1, Len++)
int
clip_TRANSLATE_CHARSET(ClipMachine * ClipMachineMemory)
{
   int len = 0, r;

   char *p1 = _clip_parc(ClipMachineMemory, 1);

   char *p2 = _clip_parc(ClipMachineMemory, 2);

   unsigned char *str = (unsigned char *) _clip_parcl(ClipMachineMemory, 3, &len);

   unsigned char *s;

   if (!p1 || !p2 || !str)
      return EG_ARG;

   if (!strcasecmp(p1, p2))
   {
      _clip_retcn(ClipMachineMemory, (char *) str, len);
      return 0;
   }

   if (!strcasecmp(p1, "utf-8"))
   {
      char *result;

      if (!_clip_translate_fromutf8(p2, (char *) str, len, &result))
      {
	 _clip_retc(ClipMachineMemory, result);
	 free(result);
      }
      else
	 _clip_retc(ClipMachineMemory, (char *) str);
      return 0;
   }

   if (!strcasecmp(p2, "utf-8"))
   {
      char *result;

      if (!_clip_translate_toutf8(p1, str, len, &result))
      {
	 _clip_retc(ClipMachineMemory, result);
	 free(result);
      }
      else
	 _clip_retc(ClipMachineMemory, (char *) str);
      return 0;
   }

   s = (unsigned char *) malloc(len + 1);
   s[len] = 0;

   if ((r = _clip_translate_charset(p1, p2, str, s, len)))
      return r;

   _clip_retcn_m(ClipMachineMemory, (char *) s, len);

   return 0;
}
Example #17
0
/*
	BUNZIP2(cStr) --> cResult
*/
int
clip_BUNZIP2(ClipMachine * mp)
{
   int       l, r;

   unsigned int rl;

   char     *s, *rp;

   s = _clip_parcl(mp, 1, &l);

   if (!s || l < 4)
      return EG_ARG;

   rl = read_ulong(s);
   rp = (char *) malloc(rl + 1);

   r = BZPREF(bzBuffToBuffDecompress) (rp, &rl, s + 4, l - 4, 0, 0);

   if (r != BZ_OK)
    {
       free(rp);
       if (r == BZ_DATA_ERROR)
	  return EG_ARG;
       else
	  return EG_MEM;
    }

   _clip_retcn_m(mp, rp, rl);

   return 0;
}
Example #18
0
int
clip_DISPBOXTERM(ClipMachine * ClipMachineMemory)
{
   int Top = _clip_parni(ClipMachineMemory, 1);

   int Left = _clip_parni(ClipMachineMemory, 2);

   int Bottom = _clip_parni(ClipMachineMemory, 3);

   int Right = _clip_parni(ClipMachineMemory, 4);

   int cl = 0;

   unsigned char *chars = (unsigned char *) _clip_parcl(ClipMachineMemory, 5, &cl);

   int chars_n = _clip_parni(ClipMachineMemory, 5);

   char *color = _clip_parc(ClipMachineMemory, 6);

   if (cl > 0 || !chars)
      disp_box(ClipMachineMemory, Top, Left, Bottom, Right, chars, cl, chars_n, color, 0);
   else
      disp_box(ClipMachineMemory, Top, Left, Bottom, Right, (unsigned char *) ("         "), 9, chars_n, color, 0);

   return 0;
}
Example #19
0
int clip_PG_IN_DATE(ClipMachine* mp){
	PG_ROWSET* rowset = (PG_ROWSET*)_clip_fetch_c_item(
		mp,_clip_parni(mp,1),_C_ITEM_TYPE_SQL);
	char* date;
	int len;

	if(!rowset){
		_clip_trap_err(mp,0,0,0,subsys,ER_NOROWSET,er_norowset);
		return 1;
	}
	if(rowset->binary){
		date = _clip_parcl(mp,2,&len);
		if(date){
			_clip_retdj(mp,*((int*)date)+2451545);	// 2451545 - julian date
		}											// for 01/01/2000
	} else {
		int m,d,y;
		date = _clip_parc(mp,2);
		if(date){
			y = atoi(date);
			m = atoi(date+5);
			d = atoi(date+8);
			_clip_retdc(mp,y,m,d);
		} else {
			_clip_retdj(mp,0);
		}
	}
	return 0;
}
Example #20
0
int
clip_LIKE(ClipMachine * ClipMachineMemory)
{
   int sl, l;

   unsigned char *s = (unsigned char *) _clip_parcl(ClipMachineMemory, 1, &sl);

   unsigned char *str = (unsigned char *) _clip_parcl(ClipMachineMemory, 2, &l);

   if (str == 0 || s == 0)
   {
      _clip_retc(ClipMachineMemory, "");
      return _clip_trap_err(ClipMachineMemory, EG_ARG, 0, 0, __FILE__, __LINE__, "LIKE");
   }
   _clip_retl(ClipMachineMemory, _clip_glob_match((char *) str, (char *) s, ClipMachineMemory->flags & TRANSLATE_FLAG) > 0);
   return 0;
}
Example #21
0
int
clip_UDPSENDTO(ClipMachine *mp)
// UDPSENDTO( nCF, cIPaddr, nPort, cMsg, [nLen], [nTimeout] )
{
	int fd = _clip_parni(mp, 1);
	C_FILE *cf = (C_FILE *) _clip_fetch_c_item(mp, fd, _C_ITEM_TYPE_FILE);
	char *ipaddr = _clip_parc(mp, 2);
	int port     = _clip_parni(mp,3), lenbuf;
	char *msg    = _clip_parcl(mp,4, &lenbuf);
	long len     = _clip_parnl(mp,5);
	int timeout  = _clip_parni(mp,6);
	int ret = -1, *err = _clip_fetch_item(mp, HASH_ferror);
	struct sockaddr_in sin;
	struct timeval tv;
	fd_set set;

	if (cf == NULL || cf->type != FT_SOCKET)
		*err = EBADF;
	else
	{
		if (_clip_parinfo(mp, 5) != NUMERIC_t)
			len = lenbuf;
		if (len > lenbuf)
			len = lenbuf;

		if (_clip_parinfo(mp, 6) != NUMERIC_t)
			timeout = cf->timeout;

		if ( timeout >= 0 ) {
			FD_ZERO(&set);
			FD_SET(cf->fileno, &set);
			tv.tv_sec = timeout / 1000;
			tv.tv_usec = (timeout % 1000) * 1000;
		}

		memset( (void *) &sin, 0, sizeof(sin) );
		sin.sin_family      = PF_INET;
		sin.sin_addr.s_addr = inet_addr(ipaddr);
		sin.sin_port        = htons(port);

		if ( timeout < 0 || select( cf->fileno+1, NULL, &set, NULL, &tv ) > 0 )
		{
			ret = sendto( cf->fileno, msg, len, 0, (struct sockaddr *) &sin, sizeof(sin) );
			*err = ret == -1 ? errno : 0;
		}
		else
#ifdef OS_MINGW
			*err = EAGAIN;
#else
			*err = ETIMEDOUT;
#endif

	}

	_clip_retnl(mp, ret);
	return 0;
}
Example #22
0
int
clip_MLPOS(ClipMachine * ClipMachineMemory)
{
   int vl = 0, i, j, len, nstr, ntab, npos = 1, wrap;

   char *e, *wrappos = NULL;

   char *vp = _clip_parcl(ClipMachineMemory, 1, &vl);

   if (vp == NULL)
   {
      _clip_retni(ClipMachineMemory, 0);
      return _clip_trap_err(ClipMachineMemory, EG_ARG, 0, 0, __FILE__, __LINE__, "MLPOS");
   }
   len = _clip_parni(ClipMachineMemory, 2);
   if (len <= 4)
      len = 79;
   nstr = _clip_parni(ClipMachineMemory, 3);
   if (nstr <= 1)
      nstr = 1;
   ntab = _clip_parni(ClipMachineMemory, 4);
   if (ntab < 1)
      ntab = 1;
   if (ntab >= len)
      ntab = len - 1;
   if (_clip_parinfo(ClipMachineMemory, 5) == LOGICAL_type_of_ClipVarType)
      wrap = _clip_parl(ClipMachineMemory, 5);
   else
      wrap = 1;

   for (i = 1, j = 1, e = vp; e < vp + vl; e++, j++)
   {
      if (*e == ' ')
	 wrappos = e;
      if (j >= len || *e == '\n')
      {
	 if (wrap && wrappos != NULL && e < vp + vl - 1 && *e != '\n')
	 {
	    if (*(e + 1) == ' ')
	       e++;
	    else
	       e = wrappos;
	 }
	 i++;
	 j = 0;
      }
      if (*e == '\t')
	 j += ntab - 1;
      if (*e == '\r')
	 j--;
      if (i >= nstr && j >= npos)
	 break;
   }
   _clip_retni(ClipMachineMemory, e - vp + 1);
   return 0;
}
Example #23
0
int
clip_CTOF(ClipMachine * ClipMachineMemory)
{
   int SLen;

   char *S = _clip_parcl(ClipMachineMemory, 1, &SLen);

   _clip_retnd(ClipMachineMemory, *((double *) S));
   return 0;
}
Example #24
0
int
clip_MLCOUNT(ClipMachine * ClipMachineMemory)
{
   int vl = 0, i, j, len, ntab, wrap;

   char *e, *wrappos = NULL;

   char *vp = _clip_parcl(ClipMachineMemory, 1, &vl);

   if (vp == NULL)
   {
      _clip_retni(ClipMachineMemory, 0);
      return 0;
   }
   len = _clip_parni(ClipMachineMemory, 2);
   if (len <= 4)
      len = 79;
   ntab = _clip_parni(ClipMachineMemory, 3);
   if (ntab < 1)
      ntab = 1;
   if (ntab >= len)
      ntab = len - 1;
   if (_clip_parinfo(ClipMachineMemory, 5) == LOGICAL_type_of_ClipVarType)
      wrap = _clip_parl(ClipMachineMemory, 5);
   else
      wrap = 1;

   for (i = 0, j = 1, e = vp; e < vp + vl; e++, j++)
   {
      if (*e == ' ')
	 wrappos = e;
      if (j >= len || *e == '\n')
      {
	 if (wrap && wrappos != NULL && e < vp + vl - 1 && *e != '\n')
	 {
	    if (*(e + 1) == ' ')
	       e++;
	    else
	    {
	       e = wrappos;
	       wrappos = NULL;
	    }
	 }
	 i++;
	 j = 0;
      }
      if (*e == '\t')
	 j += ntab - 1;
      if (*e == '\r')
	 j--;
   }
   _clip_retni(ClipMachineMemory, i + (j > 1));
   return 0;
}
Example #25
0
int
clip_SETCLIPBOARDDATA(ClipMachine * mp)
{
	int len;
	char * data = _clip_parcl(mp,1,&len);
	if ( data == NULL )
		_clip_retl(mp,0);
	else
		_clip_retl(mp,to_clipboard((const unsigned char *)data,_clip_parni(mp,2),len));

	return 0;
}
Example #26
0
int
clip_COLORTON(ClipMachine * ClipMachineMemory)
{
   int l, attr = _clip_parni(ClipMachineMemory, 1);

   char *s = _clip_parcl(ClipMachineMemory, 1, &l);

   if (s != NULL)
      attr = _clip_str2attr(s, l);
   _clip_retni(ClipMachineMemory, attr);
   return 0;
}
Example #27
0
int
clip_JUSTRIGHT(ClipMachine * ClipMachineMemory)
{
   int l1, l2, i;

   unsigned char *e, *ret, *end, *cur;

   unsigned char *str = (unsigned char *) _clip_parcl(ClipMachineMemory, 1, &l1);

   int ch = _clip_parni(ClipMachineMemory, 2);

   unsigned char *s = (unsigned char *) _clip_parcl(ClipMachineMemory, 2, &l2);

   int rset = (*(char *) (_clip_fetch_item(ClipMachineMemory, HASH_csetref)) == 't');

   if (s != NULL)
      ch = *s;
   if (ch == 0)
      ch = ' ';

   if (str == NULL || l1 == 0)
   {
      _clip_retc(ClipMachineMemory, "");
      return 0;
   }
   ret = malloc(l1 + 1);
   for (e = str + l1 - 1, end = str; e > end && *e == ch; e--);
   i = str + l1 - e - 1;
   end = str + l1 - i;
   for (cur = ret; i > 0; i--, cur++)
      *cur = ch;
   for (e = str; e < end; e++, cur++)
      *cur = *e;
   ret[l1] = 0;
   if (rset && _clip_par_isref(ClipMachineMemory, 1))
      _clip_par_assign_str(ClipMachineMemory, 1, (char *) ret, l1);
   _clip_retcn_m(ClipMachineMemory, (char *) ret, l1);
   return 0;
}
Example #28
0
int clip_ODBC_OUT_TIME(ClipMachine* mp){
	int len;
	const char* t = _clip_parcl(mp,1,&len);
	short int s[3] = {0,0,0};

	if(!((_clip_parinfo(mp,1) != CHARACTER_t) || !t || (len < 8))){
		s[0] = atoi(t);
		s[1] = atoi(t+3);
		s[2] = atoi(t+6);
	}
	_clip_retcn(mp,(char*)s,6);
	return 0;
}
Example #29
0
int
odbc_createconn(ClipMachine * cm)
{
	int dbl,userl,passwdl;
	char* db = _clip_parcl(cm,2,&dbl);
	char* user = _clip_parcl(cm,3,&userl);
	char* passwd = _clip_parcl(cm,4,&passwdl);
	ODBC_CONN *conn = NULL;
	SQLHDBC tmpconn;
	SQLRETURN er;
	SQLHENV henv;
	char dbms[30];

	if(!user)
		userl = 0;
	if(!passwd)
		passwdl = 0;

	if((er = SQLAllocEnv(&henv))) goto err;
	if((er = SQLAllocConnect(henv,&tmpconn))) goto err;
	if((er = SQLConnect(tmpconn,db,dbl,user,userl,passwd,passwdl))) goto err;
	/* silly PostgreSQL's ODBC driver */
	if((er = SQLGetInfo(tmpconn,SQL_DBMS_NAME,dbms,sizeof(dbms),0)))
		goto err;

	conn = calloc(sizeof(ODBC_CONN),1);
	conn->conn = tmpconn;
	conn->vtbl = &vtbl;
	conn->henv = henv;
	if(strcmp(dbms,"PostgreSQL")==0)
		conn->postgres = 1;

	return _clip_store_c_item(cm, (void *) conn, _C_ITEM_TYPE_SQL, destroy_odbc_conn);
err:
	odbc_error(cm,(conn?conn->loc:0),henv,tmpconn,0,__LINE__,er_connect);
	if(conn)
		free(conn);
	return -1;
}
Example #30
0
int
clip_BIN2IPADDR(ClipMachine *mp)
{
	int len;
	char *addr = _clip_parcl(mp, 1, &len);

	if (addr == NULL || len != sizeof(struct in_addr))
		_clip_retc(mp, "");
	else
		_clip_retc(mp, inet_ntoa( *(struct in_addr*)addr));

	return 0;
}