Example #1
0
File: dlink.c Project: tcbabu/kglib
int Dread(Dlink **L,FILE *fp,void * read_link(FILE *f)) {
 int count,i;
 void *buf;
 *L = Dopen();
 while((buf =read_link(fp)) != NULL) Dadd(*L,buf);
 return 1;
}
Example #2
0
File: buffer.c Project: 4ad/sam
Buffer *
Bopen(Discdesc *dd)
{
	Buffer *b;

	b = emalloc(sizeof(Buffer));
	b->disc = Dopen(dd);
	Strinit(&b->cache);
	return b;
}
Example #3
0
File: dlink.c Project: tcbabu/kglib
Dlink *Dcopy(Dlink *LN) {
  Dlink *tmp;
  D_l *pt;
  tmp = Dopen();
  pt = LN->st;
  while( pt !=NULL) {
    Dadd(tmp,pt->bf);
    pt = pt->nx;
  }
  return(tmp);
}
Example #4
0
int  SetSupGroups(LINACONFIG *lc,int Index) {
   FILE *pf=NULL;
   char buff[2000],*pt,*Pw,*UserName;
   int GroupNo,Ugid,*ipt,count,*array,i;
   Dlink *Glist=NULL;
   pf = popen("cat /etc/group","r");
   if(pf==NULL) return 0;
   Glist=Dopen();
   UserName = GetUserId(lc,Index); 
   Ugid = GetGid(lc,Index);
   while (fgets(buff,1999,pf) != NULL) {
      if( (pt=GetLoginId(buff))==NULL) continue; // Actually Group Name
      Pw = GetUserPasswd(buff);
      if(Pw==NULL) continue;
      if(Pw[0]=='\0') { free(Pw);continue;}
      GroupNo=GetUserNo(buff);
      if(GroupNo==Ugid) {free(Pw);continue;}
      if((i=SearchString(buff,UserName))>= 0) {
        int j=0;
        j =i;
        while((buff[j]>' ') &&(buff[j]!=',')&&(buff[j]!=':')) j++;
        buff[j]='\0';
        if(strcmp(buff+i,UserName)==0) {
          ipt=(int *)malloc(sizeof(int));
          *ipt = GroupNo;
          Dadd(Glist,ipt);
//          printf("%s : %d\n",pt,*ipt);
          printf("%d ",*ipt);
        }
      }
      free(pt);free(Pw);
   }
   count = Dcount(Glist);
   printf("  :Supp group count = %d\n",count);
   fflush(stdout);
   if(count > 0) {
     array = (int *)malloc(sizeof(int)*(count));
     Resetlink(Glist);
     i=0;
     while( (ipt = (int *)Getrecord(Glist))!= NULL) {
      array[i++]=*ipt;
     }
     setgroups(count,array);
     free(array);
   }
   pclose(pf);
   Dempty(Glist);
   return count;
}
Example #5
0
File: dlink.c Project: tcbabu/kglib
Dlink *Dnewlist(Dlink *LN,void * Dnewrule(void *)) {
  Dlink *tmp;
  D_l *pt;
  if(LN==NULL) {
    printf("Error: Empty list:Dnewlist\n");
    exit(0);
  }
  tmp = Dopen();
  pt = LN->st;
  while( pt !=NULL) {
    Dadd(tmp,Dnewrule(pt->bf));
    pt = pt->nx;
  }
  return(tmp);
}
Example #6
0
File: dlink.c Project: tcbabu/kglib
Dlink *Dsublist(Dlink *LN,void *s,int Dcondition(void *,void *)) {
  Dlink *tmp;
  D_l *pt;
  if(LN==NULL) {
    printf("Error: Empty list:Dsublist\n");
    exit(0);
  }
  tmp = Dopen();
  pt = LN->st;
  while( pt !=NULL) {
    if(Dcondition(s,pt->bf)) Dadd(tmp,pt->bf);
    pt = pt->nx;
  }
  return(tmp);
}
Example #7
0
File: dlink.c Project: tcbabu/kglib
int Dreadauto(Dlink **L,char *flname, int size_of_rec){
 int count,i,ret;
 void *buf;
 FILE* fp;
 *L = Dopen();
 if( (fp =fopen(flname,"rb")) == NULL ) return 0;
 if( fread(&count,sizeof(int),1,fp) <= 0 ) {
   fclose(fp);
   return -1;
  }
 for(i=0;i<count;i++) {
   buf = (void *) malloc(size_of_rec);
   if(( fread(buf,size_of_rec,1,fp)) > 0 ) Dadd(*L,buf);
   else { 
     fclose(fp);return -1;
   }
 }
 fclose(fp);
 return 1;
}
Example #8
0
Dlink *ReadSessionsFile(void) {
  int i;
  char buff[500],Field[35];
  FILE *fp;
  char *pt;
  Dlink *Slist=NULL;
  SESSIONINFO *spt;
  Slist=Dopen();
  fp = fopen("/usr/share/config/lina/session","r");
  if(fp==NULL) fp=fopen("/etc/xdg/lina/session","r");
  if(fp==NULL) {
    fp = fopen("/usr/share/config/lina/session","w");
    if(fp != NULL) {
      fprintf(fp,"KDE : startkde\n");
      fprintf(fp,"GNOME: gnome-session\n");
      fprintf(fp,"XFCE: startxfce4\n");
      fclose(fp);
      fp = fopen("/usr/share/config/lina/session","r");
    }
  }
  if(fp != NULL) {
    while(fgets(buff,299,fp) != NULL) {
       SkipCommentLine;
       pt=strchr(buff,':');
       pt[0]='\0';
       pt++;
//       while(*pt==' ') pt++;
//       j=0;while(pt[j]>= ' ')j++;
//       pt[j]='\0';
       ProcessValuePointer(pt);
       sscanf(buff,"%s",Field);
//       sscanf(pt,"%s",Value);
       spt = (SESSIONINFO *)malloc(sizeof(SESSIONINFO));
       strncpy(spt->Name,Field,29);
       strncpy(spt->Command,pt,99);
       Dadd(Slist,spt);
    }
    fclose(fp);
  } //if
  return Slist;
}
Example #9
0
void *ReadConfig(LINACONFIG *lc) {
  void *img,*img1;
  FILE *fp;
  struct stat fstat;
  SESSIONINFO *spt;
  char buff[300],*pt,Field[60],Value[300];
  int i,j;
  InitConfig(lc);
  lc->Mask = MakeMask(Isize*4,Isize*4,0.5);

  fp = fopen("/usr/share/config/lina/linarc","r");
  if(fp==NULL){
     fp = fopen("/etc/xdg/lina/linarc","r");
     if(fp!=NULL) {
       lstat("/etc/xdg/lina/linarc",&fstat);
       if( (fstat.st_mode&00077)!=0) {
         printf("Others Got Access To File...\n");
         fclose(fp);
         fp=NULL;
       }
     }
  }
  else {
    lstat("/usr/share/config/lina/linarc",&fstat);
    if( (fstat.st_mode&00077)!=0) {
      printf("Others Got Access To File...\n");
      fclose(fp);
      fp=NULL;
    }
  }
  if(fp != NULL) {
    while(fgets(buff,299,fp) != NULL) {
       SkipCommentLine;
       pt=strchr(buff,':');
       if(pt==NULL) continue;
       pt[0]='\0';
       pt++;
       if(sscanf(buff,"%s",Field)<= 0) continue;
       ProcessValuePointer(pt);
       if( strcmp(Field,"BackGround")==0 ) {
         strcpy(lc->Bkgr,pt);
         continue;
       }
       if( strcmp(Field,"RootPicture")==0 ) {
         strcpy(lc->RootPic,pt);
         continue;
       }
       if( strcmp(Field,"UserPicture")==0 ) {
//         printf("%s\n",pt);
//         fflush(stdout);
         strcpy(lc->UserPic,pt);
         continue;
       }
       if( strcmp(Field,"DefaultUser")==0 ) {
         strncpy(lc->DefUser,pt,29);
         continue;
       }
       if( strcmp(Field,"DefaultSession")==0 ) {
         strncpy(lc->DefSession,pt,29);
         continue;
       }
       if( strcmp(Field,"Red")==0 ) {
         sscanf(pt,"%d",&(lc->Red));
         if(lc->Red < 0) lc->Red=0;
         if(lc->Red > 255) lc->Red=255;
         continue;
       }
       if( strcmp(Field,"Green")==0 ) {
         sscanf(pt,"%d",&(lc->Green));
         if(lc->Green < 0) lc->Green=0;
         if(lc->Green > 255) lc->Green=255;
         continue;
       }
       if( strcmp(Field,"Blue")==0 ) {
         sscanf(pt,"%d",&(lc->Blue));
         if(lc->Blue < 0) lc->Blue=0;
         if(lc->Blue > 255) lc->Blue=255;
         continue;
       }
       if( strcmp(Field,"FontRed")==0 ) {
         sscanf(pt,"%d",&(lc->FontRed));
         if(lc->FontRed < 0) lc->FontRed=0;
         if(lc->FontRed > 255) lc->FontRed=255;
         continue;
       }
       if( strcmp(Field,"FontGreen")==0 ) {
         sscanf(pt,"%d",&(lc->FontGreen));
         if(lc->FontGreen < 0) lc->FontGreen=0;
         if(lc->FontGreen > 255) lc->FontGreen=255;
         continue;
       }
       if( strcmp(Field,"FontBlue")==0 ) {
         sscanf(pt,"%d",&(lc->FontBlue));
         if(lc->FontBlue < 0) lc->FontBlue=0;
         if(lc->FontBlue > 255) lc->FontBlue=255;
         continue;
       }
       if( strcmp(Field,"HighRed")==0 ) {
         sscanf(pt,"%d",&(lc->HighRed));
         if(lc->HighRed < 0) lc->HighRed=0;
         if(lc->HighRed > 255) lc->HighRed=255;
         continue;
       }
       if( strcmp(Field,"HighGreen")==0 ) {
         sscanf(pt,"%d",&(lc->HighGreen));
         if(lc->HighGreen < 0) lc->HighGreen=0;
         if(lc->HighGreen > 255) lc->HighGreen=255;
         continue;
       }
       if( strcmp(Field,"HighBlue")==0 ) {
         sscanf(pt,"%d",&(lc->HighBlue));
         if(lc->HighBlue < 0) lc->HighBlue=0;
         if(lc->HighBlue > 255) lc->HighBlue=255;
         continue;
       }
       if( strcmp(Field,"ButRed")==0 ) {
         sscanf(pt,"%d",&(lc->ButRed));
         if(lc->ButRed < 0) lc->ButRed=0;
         if(lc->ButRed > 255) lc->ButRed=255;
         continue;
       }
       if( strcmp(Field,"ButGreen")==0 ) {
         sscanf(pt,"%d",&(lc->ButGreen));
         if(lc->ButGreen < 0) lc->ButGreen=0;
         if(lc->ButGreen > 255) lc->ButGreen=255;
         continue;
       }
       if( strcmp(Field,"ButBlue")==0 ) {
         sscanf(pt,"%d",&(lc->ButBlue));
         if(lc->ButBlue < 0) lc->ButBlue=0;
         if(lc->ButBlue > 255) lc->ButBlue=255;
         continue;
       }
       if( strcmp(Field,"DateRed")==0 ) {
         sscanf(pt,"%d",&(lc->DateRed));
         if(lc->DateRed < 0) lc->DateRed=0;
         if(lc->DateRed > 255) lc->DateRed=255;
         continue;
       }
       if( strcmp(Field,"DateGreen")==0 ) {
         sscanf(pt,"%d",&(lc->DateGreen));
         if(lc->DateGreen < 0) lc->DateGreen=0;
         if(lc->DateGreen > 255) lc->DateGreen=255;
         continue;
       }
       if( strcmp(Field,"DateBlue")==0 ) {
         sscanf(pt,"%d",&(lc->DateBlue));
         if(lc->DateBlue < 0) lc->DateBlue=0;
         if(lc->DateBlue > 255) lc->DateBlue=255;
         continue;
       }
       if( strcmp(Field,"Transparency")==0 ) {
         sscanf(pt,"%f",&(lc->Transparency));
         if(lc->Transparency < 0.001) lc->Transparency=0.001;
         if(lc->Transparency > 1.0) lc->Transparency=1.0;
         continue;
       }
       if( strcmp(Field,"RoundingFac")==0 ) {
         sscanf(pt,"%f",&(lc->fac));
         if(lc->fac < 0) lc->fac=0;
         if(lc->fac > 1.0) lc->fac =1.0;
         continue;
       }
       if( strcmp(Field,"DateFont")==0 ) {
         sscanf(pt,"%d",&(lc->DateFont));
         if(lc->DateFont < 0) lc->DateFont=0;
         if(lc->DateFont > 35) lc->DateFont =35;
         continue;
       }
       if( strcmp(Field,"RootLogin")==0 ) {
         lc->NoRootLogin=1;
         printf("%s :%s:\n",Field,pt);
         if((strcmp(pt,"yes")==0)||(strcmp(pt,"Yes")==0)||(strcmp(pt,"YES")==0)) {
          lc->NoRootLogin=0;
         }
         if((strcmp(pt,"no")==0)||(strcmp(pt,"No")==0)||(strcmp(pt,"NO")==0)) {
          lc->NoRootLogin=1;
         }
         continue;
       }
       if( strcmp(Field,"TextMode")==0 ) {
         lc->TextMode=1;
         printf("%s :%s:\n",Field,pt);
         if((strcmp(pt,"yes")==0)||(strcmp(pt,"Yes")==0)||(strcmp(pt,"YES")==0)) {
          lc->TextMode=1;
         }
         if((strcmp(pt,"no")==0)||(strcmp(pt,"No")==0)||(strcmp(pt,"NO")==0)) {
          lc->TextMode=0;
         }
         continue;
       }
       if( strcmp(Field,"SafeMode")==0 ) {
         lc->SafeMode=1;
         printf("%s :%s:\n",Field,pt);
         if((strcmp(pt,"yes")==0)||(strcmp(pt,"Yes")==0)||(strcmp(pt,"YES")==0)) {
          lc->SafeMode=1;
         }
         if((strcmp(pt,"no")==0)||(strcmp(pt,"No")==0)||(strcmp(pt,"NO")==0)) {
          lc->SafeMode=0;
         }
         continue;
       }
       if( strcmp(Field,"ShowTime")==0 ) {
         lc->ShowTime=1;
         printf("%s :%s:\n",Field,pt);
         if((strcmp(pt,"yes")==0)||(strcmp(pt,"Yes")==0)||(strcmp(pt,"YES")==0)) {
          lc->ShowTime=1;
         }
         if((strcmp(pt,"no")==0)||(strcmp(pt,"No")==0)||(strcmp(pt,"NO")==0)) {
          lc->ShowTime=0;
         }
         continue;
       }
    } // while
    fclose(fp);
  }
  img=NULL;
  if(lc->RootPic[0]!='\0')  {
     img = kgGetImage(lc->RootPic);
  }
  if(img==NULL) {
       img = kgGetImageCopy(NULL,&rimg_str);
  }
  img1 = kgMaskImage(img,lc->Mask);
  lc->Rimg = kgChangeSizeImage(img1,Isize,Isize);
  lc->Rthumb = kgChangeSizeImage(img1,Tsize,Tsize);
  kgFreeImage(img);
  kgFreeImage(img1);
  img=NULL;
  if(lc->UserPic[0]!='\0')  {
     img = kgGetImage(lc->UserPic);
  }
  if(img==NULL) {
       img = kgGetImageCopy(NULL,&uimg_str);
  }
  img1 = kgMaskImage(img,lc->Mask);
  lc->Uimg = kgChangeSizeImage(img1,Isize,Isize);
  lc->Uthumb = kgChangeSizeImage(img1,Tsize,Tsize);
  kgFreeImage(img);
  kgFreeImage(img1);
  lc->Slist=Dopen();
  fp = fopen("/usr/share/config/lina/session","r");
  if(fp==NULL) fopen("/etc/xdg/lina/session","r");
  if(fp != NULL) {
    while(fgets(buff,299,fp) != NULL) {
       SkipCommentLine;
       pt=strchr(buff,':');
       pt[0]='\0';
       pt++;
//       while(*pt==' ') pt++;
//       j=0;while(pt[j]>= ' ')j++;
//       pt[j]='\0';
       if(sscanf(buff,"%s",Field)<= 0) continue;
       ProcessValuePointer(pt);
//       sscanf(pt,"%s",Value);
       spt = (SESSIONINFO *)malloc(sizeof(SESSIONINFO));
       strncpy(spt->Name,Field,29);
       strncpy(spt->Command,pt,99);
       Dadd(lc->Slist,spt);
    }
    fclose(fp);
  } //if
  else {
    spt = (SESSIONINFO *)malloc(sizeof(SESSIONINFO));
    strcpy(spt->Name,"KDE");
    strcpy(spt->Command,"startkde");
    Dadd(lc->Slist,spt);
    spt = (SESSIONINFO *)malloc(sizeof(SESSIONINFO));
    strcpy(spt->Name,"GNOME");
    strcpy(spt->Command,"gnome-session");
    Dadd(lc->Slist,spt);
    spt = (SESSIONINFO *)malloc(sizeof(SESSIONINFO));
    strcpy(spt->Name,"XFCE");
    strcpy(spt->Command,"startxfce4");
    Dadd(lc->Slist,spt);
    WriteSessionsFile(lc->Slist);
  }
  if(lc->TextMode) {
    spt = (SESSIONINFO *)malloc(sizeof(SESSIONINFO));
    strcpy(spt->Name,"Text Console");
    spt->Command[0]='\0';
    Dappend(lc->Slist,spt);
  }
  if(lc->SafeMode) {
    spt = (SESSIONINFO *)malloc(sizeof(SESSIONINFO));
    strcpy(spt->Name,"Fail Safe");
    strcpy(spt->Command,"xterm -geometry 80x24-0-0");
    Dappend(lc->Slist,spt);
  }
#if 0
  if(lc->RootPic[0]=='\0') {
    lc->Rimg = kgGetImageCopy(NULL,&rimg_str);
    lc->Rthumb = kgGetImageCopy(NULL,&rthumb_str);
  }
  else {
    img = kgGetImage(lc->RootPic);
    lc->Rimg = kgChangeSizeImage(img,Isize,Isize);
    lc->Rthumb = kgChangeSizeImage(lc->Rimg,Tsize,Tsize);
    kgFreeImage(img);
  }
  if(lc->UserPic[0]=='\0') {
    lc->Uimg = kgGetImageCopy(NULL,&uimg_str);
    lc->Uthumb = kgGetImageCopy(NULL,&uthumb_str);
  }
  else {
    img = kgGetImage(lc->UserPic);
    lc->Uimg = kgChangeSizeImage(img,Isize,Isize);
    lc->Uthumb = kgChangeSizeImage(lc->Uimg,Tsize,Tsize);
    kgFreeImage(img);
  }
#endif
  ReadUsersInfo(lc);
}
Example #10
0
void ReadUsersInfo(LINACONFIG *lc) {
   USERINFO *Usr;
   char *Shell=NULL;
   FILE *pf=NULL,*sf=NULL;
   char buff[500],*pt,*Pw,sbuff[500],*tmp,*tmp1;
   int UserNo;
   system("cat /etc/passwd 2>/tmp/.Junk1 >/tmp/.Junk");
   system("ypcat passwd 2>/tmp/.Junk1 >>/tmp/.Junk");
   pf = fopen("/tmp/.Junk","r");
   if(pf==NULL) return;
   lc->Ulist=Dopen();
   while (fgets(buff,499,pf) != NULL) {
      if( (pt=GetLoginId(buff))==NULL) continue;
      Shell=GetUserShell(buff);
      if(SearchString(Shell,"sh") < 0) { free(Shell);continue;}
      free(Shell);
      Shell = NULL;
#if 1
      Pw = GetUserPasswd(buff);
      if(Pw==NULL) continue;
      if(Pw[0]=='\0') { free(Pw);continue;}
      if((strlen(Pw)==1)&&(strcmp(Pw,"x")!=0)) {free(Pw);continue;}
      if((strlen(Pw)==1)&&(strcmp(Pw,"x")==0)) {
           free(Pw);
//           sf = fopen("/etc/shadow","r");
           system("cat /etc/shadow 2>/tmp/.Junk1 >/tmp/.Sjunk");
           system("ypcat shadow 2>/tmp/.Junk1 >>/tmp/.Sjunk");
           sf = fopen("/tmp/.Sjunk","r");
           if(sf==NULL) {
             fprintf(stderr,"Failed to open /etc/shadow\n");
             continue;
           }
           while (fgets(sbuff,499,sf) != NULL) {
              tmp=strchr(sbuff,':');
              tmp[0]='\0';tmp++;
              if(strcmp(sbuff,pt)!=0) continue;
              tmp1=strchr(tmp,':');
              tmp1[0]='\0';
              Pw=(char *)malloc(strlen(tmp)+1);
              strcpy(Pw,tmp);
              break;
           }
           fclose(sf);
           if((strlen(Pw)==1)&&(strcmp(Pw,"x")!=0)) {free(Pw);continue;}
           if((strlen(Pw)==1)&&(strcmp(Pw,"*")!=0)) {free(Pw);continue;}
           if((strlen(Pw)<=1)) {free(Pw);continue;}
      }
#endif
      UserNo=GetUserNo(buff);
      if(((lc->NoRootLogin!=1) &&(UserNo==0))||(UserNo>=100)){
//      if( (UserNo==0) || (UserNo>=100) ) {
        Usr= InitUserInfo();
        Usr->LoginId=pt;
        Usr->UserNo=UserNo;
        Usr->gid=GetGrpId(buff);
        Usr->Passwd=Pw;
        Usr->Name = GetUserName(buff);
        Usr->Home = GetUserHome(buff);
        Shell=GetUserShell(buff);
        Usr->Shell= Shell;
        MakeUserImages(lc,Usr);
        Dadd(lc->Ulist,Usr);
      }
      else {free(pt);free(Pw);}
   }
   Dsort(lc->Ulist,CompId);
   fclose(pf);
}