コード例 #1
0
ファイル: myls.c プロジェクト: raj454raj/myls
void printdatemodified(long long int secs)
{
    long long int tempdays=24*60*60,days=0;
    secs+=5*60*60+30*60;
    int year=1970;
    while(secs>tempdays)
    {
        days++;
        if((days%365==0&&year%4)||(days%366==0))
        {
            year++;
            days=0;
        }
        secs-=24*60*60;
        //tempdays+=24*60*60;
    }
    int monthdays[]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
    char *months[]= {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
    int i;
    if(year%4==0)monthdays[2]++;
    for(i=1; i<=12; i++)
    {
        if(days<monthdays[i])
            break;
        else
            days-=monthdays[i];
    }
    int hours=0,mins=0;
    while(secs>60)
    {
        if(secs>3600)
        {
            secs-=3600;
            hours++;
        }
        else if(secs>60)
        {
            secs-=60;
            mins++;
        }

    }
    write(1,months[i-1],4);
    write(1," ",1);
    printinteger(days+1);
    write(1," ",1);
    if(hours/10==0)
        printinteger(0);
    printinteger(hours);
    write(1,":",1);
    if(mins/10==0)
        printinteger(0);
    printinteger(mins);
    write(1," ",1);
    //printf("%lld %d %d %d %lld\n",days,hours,mins,i,secs);
}
コード例 #2
0
ファイル: myls.c プロジェクト: raj454raj/myls
int main(int argc, char *argv[])
{
    int size,tmpdec,i,fd, nread, fp, ntemp, tmpi,colons, uid,tmpflag;
    double tmpsize;
    long long int giga,mega,kilo;
    giga=1024*1024*1024;
    mega=1024*1024;
    kilo=1024;
    char buf[BUF_SIZE];
    char user[50];
    char buffer[50000],linkval[500];
    char line[1000];
    struct linux_dirent *d;
    int bpos,isalink;
    int flag=0,hasfile=0;
    char d_type;
    int l=0,a=0,h=0;
    struct stat fileStat,tmpStat;
    char file[100],tmpfile[100];
    if(argc==2||argc==3)
    {
        if(compare(argv[1],"-l")||compare(argv[1],"-a")||compare(argv[1],"-h")||compare(argv[1],"-lah")||compare(argv[1],"-lha")||compare(argv[1],"-ahl")||compare(argv[1],"-alh")||compare(argv[1],"-hla")||compare(argv[1],"-hal")||compare(argv[1],"-la")||compare(argv[1],"-ah")||compare(argv[1],"-hl")||compare(argv[1],"-al")||compare(argv[1],"-ha")||compare(argv[1],"-lh"))
        {
            flag=1;
            if(argc>2)
                hasfile=1;
            if(contains(argv[1],'l'))
                l=1;
            if(contains(argv[1],'a'))
            {
                if(l==0)
                    flag=0;
                if(argc==3)
                    hasfile=1;
                a=1;
            }
            if(contains(argv[1],'h'))
            {
                h=1;
                if(l==0)
                    flag=0;
                if(argc==3)
                    hasfile=1;
            }
        }
        else if(argc==2)
            hasfile=1;
    }
    if(argc==3)
    {
        if(compare(argv[2],"-l")||compare(argv[2],"-a")||compare(argv[2],"-h")||compare(argv[2],"-lah")||compare(argv[2],"-lha")||compare(argv[2],"-ahl")||compare(argv[2],"-alh")||compare(argv[2],"-hla")||compare(argv[2],"-hal")||compare(argv[2],"-la")||compare(argv[2],"-ah")||compare(argv[2],"-hl")||compare(argv[2],"-al")||compare(argv[2],"-ha")||compare(argv[2],"-lh"))
        {
            flag=2;
            hasfile=1;
            if(contains(argv[2],'l'))
                l=1;
            if(contains(argv[2],'a'))
            {
                a=1;
                if(l==0)
                    flag=0;
            }
            if(contains(argv[2],'h'))
            {
                h=1;
                if(l==0)
                    flag=0;
            }
        }
    }
    //	printf("%d %d %d %d %d %d\n" ,l,a,h,hasfile,flag, argc);
    if((!flag&&a&!l)||(!flag&&h&!l)||!a&!l&!h||(!flag&&a&h))
    {
        if(argc>1)
        {
            file[0]='\0';
            if(!a&&!h)
            {
                fd = open(argv[1], O_RDONLY | O_DIRECTORY);
                concat(file,argv[1]);
                //printf("%s",file);
            }
            else if(a|h)
            {
                if(hasfile)
                {
                    if(compare(argv[1],"-a")||compare(argv[1],"-h")||compare(argv[1],"-ah")||compare(argv[1],"-ha"))
                    {
                        fd = open(argv[2], O_RDONLY | O_DIRECTORY);
                        concat(file,argv[2]);
                    }
                    else if(compare(argv[2],"-a")||compare(argv[2],"-h")||compare(argv[2],"-ah")||compare(argv[2],"-ha"))
                    {
                        fd = open(argv[1], O_RDONLY | O_DIRECTORY);
                        concat(file,argv[1]);
                    }
                    //fd = open(".", O_RDONLY | O_DIRECTORY);
                }
                else
                {
                    fd = open(".", O_RDONLY | O_DIRECTORY);
                    file[0]='.';
                    file[1]='\0';
                }
            }


        }
        else
        {
            fd = open(".", O_RDONLY | O_DIRECTORY);
            file[0]='.';
            file[1]='\0';
        }
        if (fd == -1)
            handle_error("open");

        for ( ; ; )
        {

            nread = syscall(SYS_getdents, fd, buf, BUF_SIZE);
            if (nread == -1)
                handle_error("getdents");

            if (nread == 0)
                break;
            for (bpos = 0; bpos < nread;) {
                isalink=0;
                d = (struct linux_dirent *) (buf + bpos);
                d_type = *(buf + bpos + d->d_reclen - 1);
                if(d->d_name[0]=='.'&&!a)
                {
                    bpos += d->d_reclen;
                    continue;
                }
                tmpfile[0]='.';
                tmpfile[1]='\0';
                assign(tmpfile,file);
                concat(tmpfile,"/");
                //printf("");
                concat(tmpfile,d->d_name);
                if(lstat(tmpfile,&fileStat) < 0)
                    return -1;
                if(!a)
                {
                    if(d->d_name[0]!='.')
                    {

                        if(S_ISDIR(fileStat.st_mode))
                            write(1,"\x1b[1;34m",8);
                        else if(d_type==DT_LNK)
                            write(1,"\x1b[1;36m",8);
                        else if(fileStat.st_mode & S_IXUSR)
                            write(1,"\x1b[1;32m",8);

                        write(1,d->d_name,len(d->d_name)+1);
                        if(S_ISDIR(fileStat.st_mode))
                            write(1,"\x1b[0m",5);
                        else if(d_type==DT_LNK)
                            write(1,"\x1b[0m",5);
                        else if(fileStat.st_mode & S_IXUSR)
                            write(1,"\x1b[0m",5);
                        write(1,"\t",2);
                    }
                }
                else
                {
                    if(S_ISDIR(fileStat.st_mode))
                        write(1,"\x1b[1;34m",8);
                    else if(d_type==DT_LNK)
                        write(1,"\x1b[1;36m",8);
                    else if(fileStat.st_mode & S_IXUSR)
                        write(1,"\x1b[1;32m",8);

                    write(1,d->d_name,len(d->d_name)+1);
                    if(S_ISDIR(fileStat.st_mode))
                        write(1,"\x1b[0m",5);
                    else if(d_type==DT_LNK)
                        write(1,"\x1b[0m",5);
                    else if(fileStat.st_mode & S_IXUSR)
                        write(1,"\x1b[1;32m",8);
                    write(1,"\t",2);

                    //	write(1,d->d_name,len(d->d_name)+1);
                    write(1,"\t",2);
                }
                bpos += d->d_reclen;
            }
        }
        write(1,"\n",2);
        exit(EXIT_SUCCESS);
    }
    else if(flag==1)
    {
        if(hasfile)
        {
            fd = open(argv[2], O_RDONLY | O_DIRECTORY);
            file[0]='\0';
            concat(file,argv[2]);
        }
        else
        {
            fd = open(".", O_RDONLY | O_DIRECTORY);
            file[0]='.';
            file[1]='\0';
        }
        if (fd == -1)
            handle_error("open");

    }
    else
    {
        fd = open(argv[1], O_RDONLY | O_DIRECTORY);
        file[0]='\0';
        concat(file,argv[1]);
    }

    if (fd == -1)
        handle_error("open");

    for ( ; ; )
    {
        nread = syscall(SYS_getdents, fd, buf, BUF_SIZE);
        if (nread == -1)
            handle_error("getdents");

        if (nread == 0)
            break;
        //printf("%d",nread);
        for (bpos = 0; bpos < nread;)
        {
            k=0;
            isalink=0;
            d = (struct linux_dirent *) (buf + bpos);
            d_type = *(buf + bpos + d->d_reclen - 1);
            if(d->d_name[0]=='.' && !a)
            {
                bpos += d->d_reclen;
                continue;
            }
            //printf("%s\t",d->d_name);
            tmpfile[0]='\0';
            assign(tmpfile,file);
            concat(tmpfile,"/");
            concat(tmpfile,d->d_name);
            if(lstat(tmpfile,&fileStat) < 0)
                return 1;
            if(S_ISDIR(fileStat.st_mode))
                write(1,"d",2);
            else
            {
                if(d_type==DT_LNK)
                {
                    isalink=1;
                    write(1,"l",2);
                }
                else
                    write(1,"-",2);

            }
            //				write(1, (S_ISDIR(fileStat.st_mode)) ? "d" : (S_ISLNK(fileStat.st_mode)?"l":"-"), 2);
            write(1, (fileStat.st_mode & S_IRUSR) ? "r" : "-", 2);
            write(1, (fileStat.st_mode & S_IWUSR) ? "w" : "-", 2);
            write(1, (fileStat.st_mode & S_IXUSR) ? "x" : "-", 2);
            write(1, (fileStat.st_mode & S_IRGRP) ? "r" : "-", 2);
            write(1, (fileStat.st_mode & S_IWGRP) ? "w" : "-", 2);
            write(1, (fileStat.st_mode & S_IXGRP) ? "x" : "-", 2);
            write(1, (fileStat.st_mode & S_IROTH) ? "r" : "-", 2);
            write(1, (fileStat.st_mode & S_IWOTH) ? "w" : "-", 2);
            write(1, (fileStat.st_mode & S_IXOTH) ? "x" : "-", 2);
            write(1," ",2);
            if(!isalink)
                printinteger(fileStat.st_nlink);
            else
                write(1,"1",2);
            write(1,"\t",2);
            //printinteger(fileStat.st_uid);
            //write(1,"\t",2);
            {
                fp=open("/etc/passwd",O_RDONLY);
                tmpi=0;
                colons=0;
                tmpflag=0;
                uid=0;
                while(ntemp=read(fp, buffer, 1))
                {
                    if(buffer[0]=='\n')
                    {
                        colons=0;
                        tmpflag=0;
                        uid=0;
                        tmpi=0;
                        line[0]='\0';
                        continue;
                    }
                    line[tmpi++]=buffer[0];
                    if(buffer[0]==':')
                        colons++;
                    if(colons==3&&tmpflag)
                    {
                        tmpflag=0;
                        if(uid==fileStat.st_uid)
                            break;
                    }
                    if(tmpflag)
                    {
                        uid=uid*10+buffer[0]-'0';
                    }
                    if(colons==2)
                        tmpflag=1;
                }
                line[tmpi]='\0';
                tmpi=0;
                for(i=0; line[i]; i++)
                {
                    if(line[i]==':')
                        break;
                    else
                        user[tmpi++]=line[i];
                }
                user[tmpi]='\0';
                //printinteger(uid);
                write(1, user, len(user)+1);
            }
            write(1,"\t",2);
            {
                fp=open("/etc/group",O_RDONLY);
                tmpi=0;
                colons=0;
                tmpflag=0;
                uid=0;
                while(ntemp=read(fp, buffer, 1))
                {
                    if(buffer[0]=='\n')
                    {
                        colons=0;
                        tmpflag=0;
                        uid=0;
                        tmpi=0;
                        line[0]='\0';
                        continue;
                    }
                    line[tmpi++]=buffer[0];
                    if(buffer[0]==':')
                        colons++;
                    if(colons==3&&tmpflag)
                    {
                        tmpflag=0;
                        if(uid==fileStat.st_gid)
                            break;
                    }
                    if(tmpflag)
                    {
                        uid=uid*10+buffer[0]-'0';
                    }
                    if(colons==2)
                        tmpflag=1;
                }
                line[tmpi]='\0';
                tmpi=0;
                for(i=0; line[i]; i++)
                {
                    if(line[i]==':')
                        break;
                    else
                        user[tmpi++]=line[i];
                }
                user[tmpi]='\0';
                write(1, user, len(user)+1);
            }
            write(1,"\t",2);
            if(h)
            {
                tmpsize=fileStat.st_size;
                size=(int)(tmpsize);
                if(size/giga)
                {
                    if(size/giga>1024)
                    {
                        printinteger((int)((tmpsize/giga)/1024));
                        tmpdec=((int)(10*((tmpsize/giga)/1024)))%10;
                        write(1,".",2);
                        //printf("*%d*",tmpdec);
                        printinteger(tmpdec);
                        write(1, "T", 2);
                    }
                    else
                    {
                        printinteger((int)(tmpsize/giga));
                        tmpdec=((int)((10*(tmpsize/giga))))%10;
                        write(1,".",2);
                        //printf("*%d*",tmpdec);
                        printinteger(tmpdec);
                        write(1, "G", 2);
                    }
                }
                else if(size/mega)
                {
                    printinteger((int)(tmpsize/mega));
                    tmpdec=((int)(10*(tmpsize/mega)))%10;
                    write(1,".",2);
                    //	printf("*%d*",tmpdec);
                    printinteger(tmpdec);
                    write(1, "M", 2);
                }
                else if(size/kilo)
                {
                    printinteger((int)(tmpsize/kilo));
                    tmpdec=((int)(10*(tmpsize/kilo)))%10;
                    write(1,".",2);
                    //printf("*%d*",tmpdec);
                    printinteger(tmpdec);
                    write(1, "K", 2);
                }
                else
                {
                    printinteger(size);
                }

            }
            else
                printinteger(fileStat.st_size);

            write(1, "\t", 2);
            printdatemodified(fileStat.st_mtime);
            if(S_ISDIR(fileStat.st_mode))
                write(1,"\x1b[1;34m",8);
            else if(isalink)
                write(1,"\x1b[1;36m",8);
            else if(fileStat.st_mode & S_IXUSR)
                write(1,"\x1b[1;32m",8);
            write(1,d->d_name,len(d->d_name)+1);
            if(S_ISDIR(fileStat.st_mode))
                write(1,"\x1b[0m",5);
            else if(isalink)
            {
                write(1,"\x1b[0m",5);
                write(1, " -> ",4);
                readlink(tmpfile,linkval,500);
                write(1,"\x1b[1;34m",8);
                write(1,linkval,len(linkval));
                write(1,"\x1b[0m",5);
            }
            else if(fileStat.st_mode & S_IXUSR)
                write(1,"\x1b[0m",5);
            write(1,"\n",2);
            bpos += d->d_reclen;
        }
    }

    exit(EXIT_SUCCESS);
}
コード例 #3
0
ファイル: main.c プロジェクト: linux-kamal/embedded-c
int main(void)
{
	char data0[11]="LCD TEST";
	char txbuff[] = "kamal";
	char rxbuffer[10];
	signed int val = 0;
	uint8_t byte_count = 0;

	char id1[10] = "55000E2B86";
	char id2[10] = "55000E209B";

	/* Initialization start here */
	_delay_ms(10);
	lcd_init();
	usart_init();
	_delay_us(10); 			
	printstring(data0);
	_delay_ms(2000);
	clear();
	//home();
	//while(1);
	locate(1,1);
	printstring("Loading System");
	
	for(val=0;val<=100;val++)
	{
		locate(1,2);
		printinteger(val);
		printchar('%');
		_delay_ms(200);
	}	
	_delay_ms(1000);
	clear();
	
	//_delay_ms(2000);;
	//clear();
	//txbyte('a');
	//txstring(txbuff,strlen(txbuff));
	locate(1,1);
	while(1)
	{
		//int check = ischarwaiting();
		if (ischarwaiting() > 0)
		{ 	
			
			rxbuffer[byte_count] = rxbyte();
			byte_count++;
			//clear();
			//printchar(var);
		}
		if (byte_count > 9) {
			*(rxbuffer + byte_count)= '\0';
			byte_count = 0;			
			printstring(rxbuffer);
			// string compare
			if(strcmp(rxbuffer, id2) == 0){
				printstring("match2");
			}
			if(strcmp(rxbuffer, id1) == 0){
				printstring("match1");
			}
			*rxbuffer = '\0';
			//asm ( "jmp 0x0000" );
		}
		
	}
	return 0;
}