first commit; got the readme and main source file
This commit is contained in:
commit
a1ecf7e2b8
|
@ -0,0 +1,111 @@
|
|||
practice
|
||||
========
|
||||
|
||||
keep track of instrument practicing minutes
|
||||
|
||||
+-----+
|
||||
|USAGE|
|
||||
+-----+
|
||||
|
||||
=> record a practice session
|
||||
$ practice
|
||||
wait until the end of your practice session, then control-c
|
||||
|
||||
=> read out practice sessions in the current period (for a
|
||||
report)
|
||||
$ practice report
|
||||
|
||||
=> read out a practice sessions for a given period (for a
|
||||
report)
|
||||
$ practice report 2
|
||||
|
||||
=> start new reporting period
|
||||
$ practice period
|
||||
|
||||
+------+
|
||||
|CONFIG|
|
||||
+------+
|
||||
|
||||
=> save location
|
||||
#define SAVLOCO "/home/user/savelocation"
|
||||
|
||||
=> name
|
||||
$ practice name <name>
|
||||
|
||||
=> instrument
|
||||
$ practice instrument <instrument>
|
||||
|
||||
+----------------+
|
||||
|SAVE FILE FORMAT|
|
||||
+----------------+
|
||||
|
||||
HEADER
|
||||
+-+-----------------------------+
|
||||
|1| <name> |
|
||||
|2| <instrument name> |
|
||||
+-+-----------------------------+
|
||||
|
||||
The following lines can be in any order. It is left to the
|
||||
reader to determine what behavior they implement.
|
||||
|
||||
PRACTICE SESSION
|
||||
+----------------------+
|
||||
|P0210201923 Music in F|
|
||||
+----------------------+
|
||||
|
||||
- the first character of a practice session entry is always
|
||||
ASCII P
|
||||
- the next two characters is the month, from 01-12
|
||||
- the next two characters is the day, from 01-31
|
||||
- the next four characters is the year, from 0000-9999
|
||||
- the next characters until the delimiting space are
|
||||
considered the length of the practice session in
|
||||
minutes, from 1-255
|
||||
- the next character, the delimiting space, delimits the
|
||||
metadata on the left and the name of the piece on the right
|
||||
- the remaining characters are considered the name of the
|
||||
piece you are practicing
|
||||
|
||||
PERIOD
|
||||
+-----------------+
|
||||
|S02 First Quarter|
|
||||
+-----------------+
|
||||
- the first character of a period entry is always ASCII S
|
||||
- the next two characters is the ID, ranging from 00-99
|
||||
- the next character is the space delimiter
|
||||
- the following characters is the human readable period name
|
||||
|
||||
END
|
||||
+---+
|
||||
|END|
|
||||
+---+
|
||||
- an end line is valid only if:
|
||||
+ the first character in the line should ALWAYS be ASCII E,
|
||||
followed by ASCII N, and ASCII D.
|
||||
+ the line is located at the last line of the file
|
||||
|
||||
AN EXAMPLE
|
||||
+--+--------------------------------------------------------+
|
||||
|01|randomington userington |
|
||||
|02|F Horn |
|
||||
|03|S00 First Quarter |
|
||||
|04|P0908202024 Generic Practice |
|
||||
|05| ... more entries ... |
|
||||
|06|S01 Second Quarter |
|
||||
|07| ... more entries ... |
|
||||
|08|END |
|
||||
+--+--------------------------------------------------------+
|
||||
|
||||
+----+
|
||||
|BUGS|
|
||||
+----+
|
||||
|
||||
=> practice sessions fail due to starting in one day and
|
||||
ending in another [will not fix]
|
||||
+ practicing in the middle of the night is never a good
|
||||
idea
|
||||
|
||||
This document, and all related articles shall be published
|
||||
under public domain. The author, randomuser,
|
||||
(randomuser@tilde.club) hereby discharges all warranty
|
||||
under applicable law, if legal.
|
|
@ -0,0 +1,43 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <signal.h>
|
||||
|
||||
time_t buf;
|
||||
struct tm bt;
|
||||
struct tm et;
|
||||
int flg = 1;
|
||||
|
||||
struct time {
|
||||
int hour;
|
||||
int min;
|
||||
};
|
||||
struct date {
|
||||
int year;
|
||||
int month;
|
||||
int day;
|
||||
};
|
||||
|
||||
void sighnd() { flg = 0; }
|
||||
void flgwt() { while(flg) { continue; } }
|
||||
|
||||
int writeData(int fd, struct time time, int minutes);
|
||||
|
||||
struct time timediff(struct tm f, struct tm l) {
|
||||
struct time tmp;
|
||||
tmp.hour = f.tm_hour - l.tm_hour;
|
||||
tmp.min = f.tm_min - l.tm_min;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
if(argc == 1) {
|
||||
buf = time(NULL);
|
||||
bt = *localtime(&buf);
|
||||
}
|
||||
printf("%d:%02d:%02d\n", bt.tm_hour, bt.tm_min, bt.tm_year + 1900);
|
||||
signal(SIGINT, sighnd);
|
||||
flgwt();
|
||||
printf("exiting lol\n";
|
||||
return 0;
|
||||
}
|
Reference in New Issue