void add(struct task t, int size){
- int l,m,h,i;
-
- h = linecount();
+ int l,m,h,i,len;
+ FILE *fcopy;
+ char *s;
+ h = len = linecount();
m = h / 2;
l = 0;
- while (h != m && m != l){
+ while (!(h == m && m == l)){
i = strcmp(t.task,gettask().task);
if (i < 0) {
}
m = (h + l)/2;
+ fseek(fp, m, SEEK_SET);
+ }
+
+ fseek(fp, 0, SEEK_SET);
+ fcopy = fopen("/tmp/fcopy", "w");
+
+ for (i = 0; i < len;){
+ if (i == m){
+ fprintf(fp, "%s\t%i\t%s\n",t.task,t.date,t.group);
+ } else {
+ fgets(s, MAXLINE, fp);
+ fputs(s, fcopy);
+ i++;
+ }
}
+ fclose(fp);
+ fclose(fcopy);
+ remove(TODOLIST);
+ rename("/tmp/fcopy", TODOLIST);
- puttask(t);
return;
}
if (c == '\n')
i++;
}
- rewind(fp);
+ fseek(fp,0,SEEK_SET);
return i;
}
#include "odot.h"
-extern int urgency;
extern FILE *fp;
return tmp;
}
-void puttask(struct task n){
- fprintf(fp, "%s\t%i\t%s\n",n.task,n.date,n.group);
-}
struct task gettask(void){
struct task tmp;
void add(struct task t, int size){
- int l,m,h,i;
-
- h = linecount();
+ int l,m,h,i,len;
+ FILE *fcopy;
+ char *s;
+ h = len = linecount();
m = h / 2;
l = 0;
- while (h != m && m != l){
+ while (!(h == m && m == l)){
i = strcmp(t.task,gettask().task);
if (i < 0) {
}
m = (h + l)/2;
+ fseek(fp, m, SEEK_SET);
+ }
+
+ fseek(fp, 0, SEEK_SET);
+ fcopy = fopen("/tmp/fcopy", "w");
+
+ for (i = 0; i < len;){
+ if (i == m){
+ fprintf(fp, "%s\t%i\t%s\n",t.task,t.date,t.group);
+ } else {
+ fgets(s, MAXLINE, fp);
+ fputs(s, fcopy);
+ i++;
+ }
}
+ fclose(fp);
+ fclose(fcopy);
+ remove(TODOLIST);
+ rename("/tmp/fcopy", TODOLIST);
- puttask(t);
return;
}
if (c == '\n')
i++;
}
- rewind(fp);
+ fseek(fp,0,SEEK_SET);
return i;
}
#include "odot.h"
-extern int urgency;
extern FILE *fp;
return tmp;
}
-void puttask(struct task n){
- fprintf(fp, "%s\t%i\t%s\n",n.task,n.date,n.group);
-}
struct task gettask(void){
struct task tmp;