ADD file via upload

master
pl5jn4byo 3 years ago
parent 9c1f1f7596
commit 1b5118d3de

@ -0,0 +1,38 @@
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;
}
Loading…
Cancel
Save