📄 initialization.c
字号:
#include "ysh.h"
#include "extern.h"
int getline(int fd,char *buf) /*按行读取*/
{
int i=0;
char c;
while (read(fd,&c,1)){
buf[i++]=c;
if (c=='\n'){
buf[i-1]='\0';
return i;
}
}
return i;
}
void getenviron(int n,char *s)
{
int i=0,j=0,k=0;
char c,buff[80],*p;
while ((c=s[i])!='='){
buff[i++]=c;
}
buff[i++]='\0';
if (strcmp(buff,"PATH")==0){
while (s[i]!='\0'){
if (s[i]==':'){ /*将以“:”分隔的查找路径分别设置到envpath[]中*/
buff[j++]='/';
buff[j]='\0';
p=(char *) malloc(strlen(buff)+1);
strcpy(p,buff);
envpath[k++]=p; /*将路径保存在envpath[k]中*/
envpath[k]=NULL; /*字符串尾置空*/
j=0; /*为下一个envpath[i]作准备*/
i++;
}else {
buff[j]=s[i];
j++;
i++;
}
}
}
else
fprintf(stderr,"No match");
}
void init_environ()
{
int fd,n,i;
char buf[80];
/*打开保存查找路径的ysh_profile文件*/
if ((fd=open("ysh_profile",O_RDONLY,660))==-1)
{
printf("init environ variable error\n");
exit(1);
}
while (n=getline (fd,buf)){
getenviron(n,buf); /*getenviron()函数*/
}
envhis.start=0; /*初始化history循环数组*/
envhis.end=0;
head=end=NULL; /*初始化jobs链表指针*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -