parent
01df2eb619
commit
55390e5a77
@ -0,0 +1,50 @@
|
||||
long sys_getcwd(char*buf,size_t size)
|
||||
{
|
||||
struct buffer_head *bh;
|
||||
struct m_inode*n_inode,*f_inode;
|
||||
struct dir_entry*dir;
|
||||
char *tmp,*b;
|
||||
int k,i;
|
||||
tmp=(char*)malloc(256);
|
||||
b=(char*)malloc(256);
|
||||
n_inode=current->pwd;
|
||||
if(n_inode==current->root)strcpy(tmp,"/");
|
||||
bh=bread(n_inode->i_dev,n_inode->i_zone[0]);
|
||||
while(n_inode!=current->root)
|
||||
{
|
||||
dir=(struct dir_entry*)(bh->b_data+sizeof(struct dir_entry));
|
||||
f_inode=iget(n_inode->i_dev,dir->inode);
|
||||
brelse(bh);
|
||||
bh=bread(f_inode->i_dev,f_inode->i_zone[0]);
|
||||
k=0;
|
||||
while(k<f_inode->i_size)
|
||||
{
|
||||
dir=(struct dir_entry*)(bh->b_data+k);
|
||||
if(dir->inode==n_inode->i_num)break;
|
||||
k+=sizeof(struct dir_entry);
|
||||
}
|
||||
strcpy(b,"/");
|
||||
strcat(b,dir->name);
|
||||
strcat(b,tmp);
|
||||
strcpy(tmp,b);
|
||||
n_inode=f_inode;
|
||||
}
|
||||
brelse(bh);
|
||||
if(strlen(tmp)>size)return NULL;
|
||||
for(i=0;i<256;i++)
|
||||
put_fs_byte(tmp[i],buf+i);
|
||||
return (long)buf;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int sys_sleep(unsigned int count)
|
||||
{
|
||||
int a=jiffies;
|
||||
sys_signal(SIGALRM,SIG_IGN);
|
||||
sys_alarm(count);
|
||||
sys_pause();
|
||||
if((jiffies-a)/100==count)return 0;
|
||||
else return -1;
|
||||
}
|
Loading…
Reference in new issue