Ejemplo n.º 1
0
void AplusPopup::virtualScreen(A screen_)
{
  if (server()->isCDERunning()==MSTrue)
    {
      if (!QA(screen_) || screen_->t!=It)
	{
	  return;
	}

      int n=(int)screen_->n;
      unsigned long wsCount=server()->numberOfWorkspaces();

      if (n>0 && wsCount>0)
	{
	  Atom *wsAtoms=((AplusDisplayServer *)server())->workspaceAtoms();
	  if (wsAtoms==0)
	    {
	      return;
	    }

	  Atom *atoms=new Atom[n];
	  
	  int wsNum;

	  for (unsigned int i=0; i<n; ++i)
	    {
	      wsNum = (int)screen_->p[i]-1;  // workspace numbers are 1-based
	      if (wsNum<wsCount)   // if it's a valid workspace number
		{
		  atoms[i] = wsAtoms[wsNum];
		}
	      else	// the workspace number is invalid
		{
		  atoms[i] = 0;
		}
	    }

	  Atom property=XInternAtom(display(),_XA_VUE_WORKSPACE_HINTS,False);
	  XChangeProperty(display(),window(), 
			  property,property,32,
			  PropModeReplace, 
			  (unsigned char *)atoms, 
			  n);
	  XFlush (display());
	  delete [] atoms;
	  delete [] wsAtoms;  // wsAtoms were allocated by server()->workspaceAtoms() method
	}
    }
  else	// CDE is not running
    {
      if (QA(screen_) && screen_->t==It)
	{
	  Atom atom = XInternAtom(display(), "WM_VIRTUAL_SCREEN", False);
	  XChangeProperty(display(),window(),atom,XA_INTEGER,32,PropModeReplace,
			  (unsigned char *)screen_->p,1);
	}
    }
}
Ejemplo n.º 2
0
MSBoolean AplusFuncLabel::verify(A a_)
{
  MSBoolean ticks, r=MSFalse;
  int 	  i,j;
  
  if (a_!=0&&a_->n!=0&&QA(a_)&&(a_->t==Ft||a_->t==It||a_->t==Et))
  {
    P p; p.i=a_->p;
    if (a_->t==Et&&QA(p.a[0])&&(p.a[0]->t==Ft||p.a[0]->t==It))
    {
      r=MSTrue;
      value(p.a[0]);
      for (i=1; i<a_->n; i++)
      {
	if (isNull(p.a[i])==MSFalse)
	  {
	    switch(p.a[i]->t)
	      {
	      case Ct:
	      case Et:
		label((A)p.a[i]);
		break;

	      case Ft:
		ticks=MSFalse;
		P pt; pt.i=p.a[i]->p;
		for (j=0; j<p.a[i]->n; j++)
		  {
		    if (pt.f[j]<1) ticks=MSTrue;
		  }
		if (ticks==MSTrue) tick((A)p.a[i]);
		else grid((A)p.a[i]);
		break;

	      case It:
		grid((A)p.a[i]);
		break;

	      default:
		break;
	      }
	  }
      }
    }
    else if (a_->t==Ft||a_->t==It) 
    {
      value(a_);
      r=MSTrue;
    }
  }
  return r;
}
Ejemplo n.º 3
0
Archivo: o.c Proyecto: PlanetAPL/a-plus
Z I dr(A a,I f)
{
  XA;
  A z,*ap=(A*)a->p,w;
  if(!an||at!=Et||fsy(a))R ic(a); /* ic_or_copy(a) */
  w=*ap;
  Q(QF(w),9);
  if(!ar)R ic(w);  /* ic_or_copy(w) */
  {
    XW;
    I i=an,n=0,t;
    C *p;
    if(f){Q(ar>1,7)V0 n=*wd;}
    else{Q(ar+wr>MAXR,13)mv(ad+ar,wd,wr);}
    for(;--i;)
    {
      Q(!QA(a=ap[i])||(t=a->t)>Et,9);
      if(wt!=t&&a->n)
	if(f&&!n)wt=t;
	else{Q(wt>Ft||t>Ft,6)wt=Ft;}
      if(wr!=a->r){Q(!f||wr>1||a->r,7)*a->d=1;}
      Q(cm(wd+f,a->d+f,wr-f),11);
      if(f)n+=*a->d;
    }
    W(ga(wt,f?wr:ar+wr,f?n*tr(wr-1,wd+1):an*wn,f?wd:ad));
    if(f)*z->d=n;
    p=(C*)z->p;
    DO(an,a=ap[i];
       p=(*(a->t==wt?(C *(*)(I,F *,I *,I))tmv:i2f))(wt,(F *)p,a->p,a->n));
    R(I)z;
  }
}
Ejemplo n.º 4
0
A showLastSavedKstack()
{ 
  if(recurseKstack==1)
    {
      H("\343 Internal Error _doErrorStack\n");
      return aplus_nl;
    }
  
  if( lastSavedKstack && QA(lastSavedKstack) )
    return (A)ic(lastSavedKstack);
  else
    return aplus_nl;
}
Ejemplo n.º 5
0
void snapshotKstack()
{
  extern A sikAsAObj() ;
/* Consider changing signal handlers for segv and bus */
 if(recurseKstack==0)
    {
      recurseKstack=1;
      if( lastSavedKstack && QA(lastSavedKstack) )
	{
	  dc(lastSavedKstack);
	  lastSavedKstack=0;
	}
      lastSavedKstack=(A)sikAsAObj();
      recurseKstack=0;
    }
}
Ejemplo n.º 6
0
Archivo: bstub.c Proyecto: louyx/aplus
char * _mab_cover(unsigned long w)
{
  unsigned long z,i;
  char *p=_mab(w);
  if(p)
    {
      int rc;
      unsigned long ww=w+2*sizeof(long *);

#if defined(linux)
      if(initMutex) 
	  initMutex=_initMutex();
#endif

      /* Test for 8bit alignment */
      if(!QA(p) )
       	printf("!! pointer not 8bit aligned 0x%x\n",p);

      if(memTrack && ww>=memTrackThreshold) 
	printf("0x%x malloc %lu bytes\n",p,ww);

      for (z = ww >> 1, i = 1; z != 0; z >>= 1, i++);
      if( i >= MD ) i=MD-1;

      if(0!=(rc=pthread_mutex_lock(&memStats_lock)))
	{
	  perror("si() pthread_mutex_lock");
	}

      totalObjs[i]++;
      totalSize[i] += ww;
      if(totalObjs[i]>totalObjsMax[i])
	totalObjsMax[i]=totalObjs[i];
      if(totalSize[i]>totalSizeMax[i])
	totalSizeMax[i]=totalSize[i];
      
      if(rc==0 && pthread_mutex_unlock(&memStats_lock))
	{
	  perror("si() pthread_mutex_unlock");
	}

    }
  return p;
}
Ejemplo n.º 7
0
Archivo: f.c Proyecto: PlanetAPL/a-plus
Z void rake_2p(A a,A z){if(QF(a)||Et!=a->t||fsy(a)&&a->n)
{z->p[z->n++]=QA(a)?ic(a):(I)a;R;}if(!a->n)R;DO(a->n,rake_2p((A)a->p[i],z));R;}
Ejemplo n.º 8
0
Archivo: f.c Proyecto: PlanetAPL/a-plus
Z H1(ts){A z;Z C *t[]={"int","float","char","null","box","sym","func",
 "unknown"};
 W(gs(Et))*z->p=MS(si(t[QA(a)?(Et<a->t?6:Et>a->t?a->t:!a->n?3:
 Et==a->t?(QA(a=(A)*a->p)&&a->t<Xt?4:QS(a)?5:6):6):
 QP(a)?6:QX(a)?6:7]));R(I)z;}
Ejemplo n.º 9
0
void* ThreadRoutine(void* arg)
{
	connection con = *((connection*)arg);
	char buffer[BUFSIZE] = "\0";
	char retMsg[BUFSIZE] = "\0";
	int n, found;
	regex_t getFile;
	regmatch_t matches[2];
	char filename[BUFSIZE] = "\0";
	FILE* temp;
	struct stat st;
	char tempStr[BUFSIZE] = "\0";
	
	//ensure that request starts with / and not ..
	QA( regcomp(&getFile, "^GET /(.+) HTTP/1\\.1", REG_EXTENDED | REG_ICASE) == 0 );
	
	//receive data
	n = recv(con.sock, buffer, BUFSIZE-1, 0);
	QAP(n >= 0, "Error reading from socket.\n", NULL);
	buffer[n] = '\0'; //make sure 0 is set at the end
	
	//write to weblog
	fputs("REMOTE ADDRESS: ", weblog);
	fputs(inet_ntoa(con.from.sin_addr), weblog);
	fputs("\n", weblog);
	fputs(buffer, weblog);
	fflush(weblog);
	
	//get file info
	regexec(&getFile, buffer, 2, matches, 0);
	strncpy(filename, buffer + matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so);
	
	//handle "GET / HTTP/1.1"
	if( strcmp(filename, "") == 0 )
	{
		sprintf(tempStr, "ls %s > .temp", filename);
		system(tempStr);
		strcpy(filename, ".temp");
	}
	
	//get file info
	found = stat(filename, &st);
	
	//build return header
	strcpy(retMsg, "HTTP/1.1 ");
	
	if( found == -1 )
	{
		strncat(retMsg, "404 NOT FOUND\r\n", BUFSIZE - strlen(retMsg));
		strncat(retMsg, "Status: 404 NOT FOUND\r\n", BUFSIZE - strlen(retMsg));
		strncat(retMsg, "\r\n", BUFSIZE - strlen(retMsg));
	}
	else
	{
		strncat(retMsg, "200 OK\r\n", BUFSIZE - strlen(retMsg));
		strncat(retMsg, "Status: 200 OK\r\n", BUFSIZE - strlen(retMsg));
		
		strncat(retMsg, "Content-length: ", BUFSIZE - strlen(retMsg));
		sprintf(retMsg, "%s%u\r\n", retMsg, st.st_size);
		
		strncat(retMsg, "Content-type: ", BUFSIZE - strlen(retMsg));
		sprintf(retMsg, "%s%s\r\n", retMsg, "text/html");
		
		strncat(retMsg, "\r\n", BUFSIZE - strlen(retMsg));
	}
	
	//send headers
	n = send(con.sock, retMsg, strlen(retMsg), 0);
	QAP(n == strlen(retMsg), "Error sending headers.\n", NULL);
	
	//send body
	if( found == 0 )
	{
		temp = fopen(filename, "r");
		
		//send chunks at a time
		while( !feof(temp) )
		{
			memset(retMsg, 0, BUFSIZE);
			fread(retMsg, 1, BUFSIZE, temp);
			n = send(con.sock, retMsg, strlen(retMsg), 0);
			QAP(n == strlen(retMsg), "Error sending body.\n", NULL);
		}
		
		fclose(temp);
	}
	else
	{
		//print a text body for the user
		strcpy(retMsg, "404 File not found");
		n = send(con.sock, retMsg, strlen(retMsg), 0);
		QAP(n == strlen(retMsg), "Error sending body.\n", NULL);
	}
	
	//delete .temp file
	if( strcmp(filename, ".temp") )
	{
		system("rm .temp");
	}
	
	//close the connection
	close(con.sock);
	regfree(&getFile);
	free(arg);
	return 0;
}
Ejemplo n.º 10
0
Archivo: o.c Proyecto: PlanetAPL/a-plus
I rk(I f,A r,A a,A w)
{
  A z=0,*p=0;
  if(w)ND2 else ND1;
  {
    XA;
    C *pp=0,*ap,*wp;
    I wt=0,wr=0,wn=0,*wd=0;
    I n=0,t=0,i,j,k,d[9],rw,ra,ri,ir,iw=0,ia=0,ii=0,
    e=!w&&f==MP(9),h=QP(f)&&f!=MP(71)&&!e;
    Q(!QA(r),9);
    Q(r->t,6);
    Q(r->n<1||r->n>3,8);
    ar-=ra=raw(ar,*r->p);
    if(!w) mv(d,ad,ra),ir=tr(ra,ad),ad+=ra;
    else 
    {
      wt=w->t,wr=w->r,wd=w->d;
      wr-=rw=raw(wr,r->p[r->n>1]),ri=r->n>2?r->p[2]:9;
      Q(ri<0,9);
      if(ri>ra)ri=ra;
      if(ri>rw)ri=rw;
      mv(d,ad,ra-=ri);
      ia=tr(ra,ad),mv(d+ra,wd,rw),iw=tr(rw-=ri,wd);
      Q(cm(ad+=ra,wd+=rw,ri),11);
      ii=tr(ri,ad),ra+=rw+ri,ir=ia*iw*ii,wn=tr(wr,wd+=ri),ad+=ri;
      if(h&&ir>iw&&(f==MP(21)||f==MP(25)||f==MP(26)||f==MP(32)||f==MP(33)))
	h=0;
    } 
    an=tr(ar,ad);
    if(h)
    {
      g=0;
      aw_c[0]=a->c;
      aw_c[1]=w&&w->c;
      r=(A)fa(f,gC(at,ar,an,ad,a->n?a->p:0),w?gC(wt,wr,wn,wd,w->n?w->p:0):0);
      aw_c[0]=aw_c[1]=1;
      if(!r)R 0;
      r=un(&r);
      mv(d+ra,r->d,j=r->r);
      if((j+=ra)>MAXR)R q=13,(I)r;
      n=r->n;t=r->t;
      if(ir<2) R mv(r->d,d,r->r=j),r->n*=ir,(I)r;
      dc(r);
      if(g==(I (*)())rsh) R rsh(w?w:a,j,d);
      if(!g){h=0;}
      else
      {
	if(at=atOnExit,w) wt=wtOnExit;
	if(at!=a->t&&!(a=at?ep_cf(1):ci(1))) R 0;
	if(w&&wt!=w->t&&!(w=wt?ep_cf(2):ci(2))) R 0;
	OF(i,ir,n);
	W(ga(t,j,i,d));
	pp=(C*)z->p;
      }
    }
    if(!h) 
    {
      W(ga(Et,ra,ir,d));
      *--Y=zr(z),p=(A*)z->p;
    }
    if(!w)
    {
      for(ap=(C*)a->p;ir--;ap+=Tt(at,an))
	if(h) (*(I(*)(C*,C*,I))g)(pp,ap,an),pp+=Tt(t,n);
	else a=gc(at,ar,an,ad,(I*)ap),*p++=e?a:(A)fa(f,(I)a,0);
    } 
    else
    {
      for(i=0;i<ia;++i)for(j=0;j<iw;++j)
	for(k=0;k<ii;++k){
	  ap=(C*)a->p+Tt(at,(i*ii+k)*an);
	  wp=(C*)w->p+Tt(wt,(j*ii+k)*wn);
	  if(h)
	  {
	    (*(I(*)(C*,C*,C*,I))g)(pp,ap,wp,n),pp+=Tt(t,n);
	    if(q==1)*--Y=(I)z,aplus_err(q,(A)Y[1]),++Y;
	  } 
	  else
	  { 
	    *p++=(A)fa(f,(I)gc(at,ar,an,ad,(I*)ap),(I)gc(wt,wr,wn,wd,(I*)wp));
	  }
	}
    }
    if(h)R(I)z;
    if(!e)z=(A)dis(r=z),dc(r);
    R ++Y,(I)z;
  }
}