Monday, 9 January 2012

All File operations/ File Manager in C program with Linux commands

// Thanks from Prakash Katudia//
// Program for simple file manager//

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>


int my_open();
void my_close(int);
void my_write(int);
void my_read(int);
int allfiles();
void clear(int);



struct my_task
{
    int pid;
    char fl_name[10];
    int len;

};

struct my_task t1[10];

static flcnt;

int main()
{
    int ch1,fln,ch2;
    ch2=1;
    while(ch2)
    {
        printf("\n\n**************************************************Welcome********************************************************\n");
        printf("\n .........What you want.............\n");
        printf("1.Create File\n2.Delete file\n3.Enter Data in your file\n4.Read Data in your file\n5.To see all files and folders\n6. Terminate\n\n Please Input:::::   ");
        scanf("%d",&ch1);
        switch(ch1)
        {
            case 1:
                t1[flcnt].pid=my_open();
                flcnt++;
                break;
            case 2: fln=allfiles();
                my_close(fln);
                flcnt--;
                break;
            case 3: fln=allfiles();
                if(fln==11)
                {break;}
                else
                {my_write(fln);
                    break;}

            case 4: fln=allfiles();
                if(fln==11)
                {break;}
                else
                {my_read(fln);
                    break;
                }
            case 5: fln=allfiles();
                break;
            case 6: exit(0);
                break;
            default:
                printf("\n----Wrong Input---\n");
        }
        printf("\nDo you want to continue----press 1----otherwise press 0--------\n");
        scanf("%d",&ch2);

    }
    return 0;
}


int my_open()
{
    int i,fd;
    i=flcnt;
    printf("\n----Hello you are in my open----");
    printf("\nEnter your file Name..");
    scanf("%s",t1[i].fl_name);
    fd=open(t1[i].fl_name,O_CREAT|O_RDWR,0777);
    if(fd==-1)
    {
        printf("\n Fail");
    }
    else
    {
        printf("ur pid is =%d",fd);
    }
    close(fd);
    printf("\n...Total file in your directory..\n\n");
    system("ls");
    printf("\n\n");
    return fd;
}



int allfiles()
{
    int i,flag=0;
    char buf[10];
    printf("Which file you want to do operation\n");
    system("ls");
    scanf("%s",buf);
    for(i=0;i<=flcnt;i++)
    {
        if(strcmp(buf,t1[i].fl_name)==0)
        {
            flag++;
            break;
        }

    }
    if(flag==0)
    {
        printf("***********File name is not matched*************\n");
        return 11;
    }
    else
    {
//        printf("\n****returning value from allfile %d\n",i);
        return i;
    }
}   



void my_write(int fln)
{
    int fd;
    char buf[50]={0};
    int count,len;
    fd=open(t1[fln].fl_name,O_RDWR,0777);
    if(t1[fln].len!=0)
    {
        printf("\n*******Already contains are inside in file********\n");
        my_read(fln);
        return;
    }
    else
    {
        printf("\n*********** Ur pid is %d",t1[fln].pid);
    //    printf("\nUr in my write\n");
        printf("\nWrite your contains upto 50 words::   ");
        printf("\n");
        __fpurge(stdin);
        gets(buf);
        count=write(t1[fln].pid,buf,strlen(buf));
        t1[fln].len=count;
        printf("\nTotal written data words are %d ",count);
        printf("\n");
        printf("\nData entery over\n");
        close(fd);
    }

}

void my_close(int fln)
{
    printf("your file num %d\n",fln);
    remove(t1[fln].fl_name);
}



void my_read(int fln)
{
    int fd,ch1;
    char buf[50]={0};
    printf("Total char are =%d\n",t1[fln].len);
    //printf("\nHello ur in my read operation\n");
    if(t1[fln].len==0)
    {
        printf("**************File is Empty***********\n");
    }
    else
    {
        fd=open(t1[fln].fl_name,O_RDWR,0777);
        read(t1[fln].pid,buf,t1[fln].len);
        printf("You data in file is\n**************\n %s\n****************\n ",buf);
        printf("\nDo you want to clear DATA???\n 1.Yes      2.NO\n");
        scanf("%d",&ch1);
        if(ch1==1)
        {
            close(fd);
            clear(fln);
        }
        close(fd);
    }
}





void clear(int fln)
{
    int count;
    char buff[50]={0};
    open(t1[fln].fl_name,O_RDWR,0777);
    count=write(t1[fln].pid,buff,50);
    if(count==-1)
    {
        printf("\nData cant be cleared");
    }
    else
    {
        printf("\nWait for 5 sec to clear\n ....");
        sleep(5);
        printf("\nData clear..");
        t1[fln].len=0;
    }
}

If any doubt in the program ask me..
Prakash Katudia

1 comment: