Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //SO IS1 222B LAB07
- //Magdalena Bikowska
- //bm44273@zut.edu.pl
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <fcntl.h>
- #include <dirent.h>
- #include <time.h>
- #include <string.h>
- void copy(char *to, const char *from)
- {
- while(*to++ = *from++);
- }
- int length(char *s)
- {
- int i = 0;
- while(*s != '\0')
- {
- i++;
- s++;
- }
- return i;
- }
- void cut(char *s, int n)
- {
- for(int i = 0; i < n; i++, *s++);
- *s = '\0';
- }
- char int_to_char(int n)
- {
- char result;
- while(n != 0)
- result += n;
- n + 48;
- return result;
- }
- struct log {
- struct tm date; // czas
- char argument[10]; // napisz argumentu wywołania
- };
- int check_name(const char *name)
- {
- if(name[4]!='.' && name[6]!='.' && name[9]!='.' && name[12]!='.' && name[15]!='.' ) return 0;
- return 1;
- }
- char *plik="0000.0.00.00.00.txt";
- void list_dir(const char *path) {
- struct dirent *entry;
- DIR *dir = opendir(path);
- if (dir == NULL) {
- return;
- }
- int i = 0;
- //char *plik="0000.0.00.00.00.txt";
- while ((entry = readdir(dir)) != NULL) {
- if (entry->d_type == DT_REG){
- if(check_name(entry->d_name))
- {
- if(strcmp(plik,entry->d_name)<0)
- {
- printf("%s\n",entry->d_name);
- plik = entry->d_name;
- }
- i++;
- }
- }
- }
- closedir(dir);
- return;
- }
- int main(int argc, char *argv[]){
- if(argc == 1)
- exit(1);
- int opt;
- struct log obiekcik;
- time_t ptr;
- time(&ptr);
- char* rezultat;
- int handle;
- int ile;
- int wsk = 0;
- int len;
- //char * plik;
- FILE *file;
- char c[1000];
- char test[50];
- while((opt = getopt(argc, argv, "rw:")) != -1)
- {
- switch(opt)
- {
- case 'w':
- localtime_r(&ptr, &obiekcik.date);
- printf("%d\n", obiekcik.date.tm_mon + 1);
- len = length(argv[2]);
- if(len < 9)
- cut(argv[2], len);
- else
- {
- cut(argv[2], 9);
- len = 9;
- }
- copy(obiekcik.argument, argv[2]);
- printf("%s\n", obiekcik.argument);
- char name[20];
- char a[5];
- //sprintf(obiekcik.date.tm_year + 1900, a, 10);
- //copy(name, a);
- //int_to_char(obiekcik.date.tm_year + 1900, a);
- ile = obiekcik.date.tm_year + 1900;
- wsk++;
- while ( ile / 10 > 0)
- {
- wsk++;
- ile = ile/10;
- }
- sprintf(a, "%d", obiekcik.date.tm_year + 1900);
- copy(name, a);
- copy(&name[wsk], ".");
- sprintf(a, "%d", obiekcik.date.tm_mon + 1);
- //printf("to a %s\n", a);
- copy(&name[++wsk], a);
- ile = obiekcik.date.tm_mon + 1;
- wsk++;
- while ( ile / 10 > 0)
- {
- wsk++;
- ile = ile/10;
- }
- copy(&name[wsk], ".");
- sprintf(a, "%d", obiekcik.date.tm_mday);
- //printf("to a %s\n", a);
- copy(&name[++wsk], a);
- ile = obiekcik.date.tm_mday;
- wsk++;
- while ( ile / 10 > 0)
- {
- wsk++;
- ile = ile/10;
- }
- copy(&name[wsk], ".");
- sprintf(a, "%d", obiekcik.date.tm_hour);
- //printf("to a %s\n", a);
- copy(&name[++wsk], a);
- ile = obiekcik.date.tm_hour;
- wsk++;
- while ( ile / 10 > 0)
- {
- wsk++;
- ile = ile/10;
- }
- copy(&name[wsk], ".");
- sprintf(a, "%d", obiekcik.date.tm_min);
- //printf("to a %s\n", a);
- copy(&name[++wsk], a);
- ile = obiekcik.date.tm_min;
- wsk++;
- while ( ile / 10 > 0)
- {
- wsk++;
- ile = ile/10;
- }
- copy(&name[wsk], ".");
- copy(&name[++wsk], "txt");
- /*copy(name[5], itoa(obiekcik.date.tm_mon + 1));
- copy(name[7], ".");
- copy(name[, itoa(obiekcik.date.tm_mday));
- copy(name[, ".");
- copy(name, itoa(obiekcik.date.tm_hour));
- copy(name, ".");
- copy(name, itoa(obiekcik.date.tm_min));
- copy(name, ".");
- copy(name, "log");*/
- //printf("%s\n", name);
- handle = open(name, O_RDWR | O_CREAT, S_IRWXU);
- if(handle >= 0)
- {
- //read(0, &input, 1);
- lseek(handle, 0, SEEK_END);
- write(handle, &obiekcik.argument, length(obiekcik.argument));
- write(handle, "\n", sizeof(char));
- write(handle, &name, length(name) - 4);
- //write(handle, &obiekcik.date, sizeof(obiekcik.date));
- write(handle, "\n", sizeof(char));
- }
- close(handle);
- /*handle = open("msg.txt", O_RDWR | O_CREAT, S_IRWXU);
- if(handle >= 0)
- {
- read(0, &input, 1);
- write(handle, &input, sizeof(input));
- }
- close(handle);*/
- break;
- case 'r':
- list_dir(".");
- strcat(test,"./");
- strcat(test,plik);
- printf("%s\n", test);
- if ((file = fopen(test, "r") )== NULL)
- printf("Error! opening file");
- fscanf(file, "%[^\n]", c);
- printf("%s\n", c);
- //fclose(fptr);
- //for(int i = 0; i<SIZE;i++)
- // printf("%s\n", lista[i]);
- /*struct dirent *dir;
- DIR *d = opendir(".");
- if (d)
- {
- while ((dir = readdir(d)) != NULL)
- {
- printf("%s\n", dir->d_name);
- }
- closedir(d);
- }*/
- break;
- default:
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement