fprintf(fp_ou3,"<tr><td class=\"data2\"><a href=\"%s/index.html\">%s %s %s</a></td></tr>\n",daynum,yearnum,nmonth,daynum);
}
fputs("</table></div>\n",fp_ou3);
- write_html_trailer(fp_ou3);
- fclose(fp_ou3);
+ if (write_html_trailer(fp_ou3)<0)
+ debuga(_("Write error in the index %s\n"),dayindex);
+ if (fclose(fp_ou3)==EOF)
+ debuga(_("Failed to close the index file %s - %s\n"),dayindex,strerror(errno));
}
fputs("</table></div>\n",fp_ou2);
- write_html_trailer(fp_ou2);
- fclose(fp_ou2);
+ if (write_html_trailer(fp_ou2)<0)
+ debuga(_("Write error in the index %s\n"),monthindex);
+ if (fclose(fp_ou2)==EOF)
+ debuga(_("Failed to close the index file %s - %s\n"),monthindex,strerror(errno));
}
fputs("</table></div>\n",fp_ou);
- write_html_trailer(fp_ou);
- fclose(fp_ou);
+ if (write_html_trailer(fp_ou)<0)
+ debuga(_("Write error in the index %s\n"),yearindex);
+ if (fclose(fp_ou)==EOF)
+ debuga(_("Failed to close the index file %s - %s\n"),yearindex,strerror(errno));
}
static void make_file_index(void)
DIR *dirp;
struct dirent *direntp;
char wdir[MAXLEN];
- char month[4];
char data[80];
char tbytes[20];
char media[20];
int nallocated;
int order;
int i;
- int cmp;
int tuser;
struct getwordstruct gwarea;
struct sortstruct
{
- char sortname[9];
+ int year, month, day, sortnum;
char creationdate[MAX_CREATION_DATE];
char dirname[MAX_DIR_NAME];
char date[60];
exit(EXIT_FAILURE);
}
if(strcmp(df,"u") == 0) {
- strncpy(item->sortname,direntp->d_name,4);
- strncpy(month,direntp->d_name+4,3);
+ item->year=atoi(direntp->d_name);
+ item->month=conv_month(direntp->d_name+4);
+ item->day=atoi(direntp->d_name+7);
} else {
- strncpy(item->sortname,direntp->d_name+5,4);
- strncpy(month,direntp->d_name+2,3);
+ item->year=atoi(direntp->d_name+5);
+ item->month=conv_month(direntp->d_name+2);
+ item->day=atoi(direntp->d_name);
}
- item->sortname[4]='\0';
- month[3]='\0';
- conv_month(month);
- strcat(item->sortname,month);
- if(strcmp(df,"u") == 0) strncat(item->sortname,direntp->d_name+7,2);
- else strncat(item->sortname,direntp->d_name,2);
+ item->sortnum=(item->year*16+item->month)*32+item->day;
obtdate(outdir,direntp->d_name,data);
if (sscanf(data,"%d-%d-%d %d:%d:%d %d",&iyear,&imonth,&iday,&ihour,&iminute,&isecond,&idst)==7) {
formatdate(data,sizeof(data),iyear,imonth,iday,ihour,iminute,isecond,idst);
sortlist=tempsort;
}
for (i=nsort ; i>0 ; i--) {
- cmp=strcmp(item->sortname,sortlist[i-1]->sortname);
- if (cmp==0) cmp=strcmp(item->creationdate,sortlist[i-1]->creationdate);
- if (cmp>=0) {
- break;
+ if (item->sortnum>sortlist[i-1]->sortnum) break;
+ if (item->sortnum==sortlist[i-1]->sortnum) {
+ if (strcmp(item->creationdate,sortlist[i-1]->creationdate)>=0) break;
}
sortlist[i]=sortlist[i-1];
}
fprintf(fp_ou,"<tr><td class=\"data2\"><a href='%s/%s'>%s</a></td><td class=\"data2\">%s</td><td class=\"data\">%d</td><td class=\"data\">%s</td><td class=\"data\">%s</td></tr>\n",item->dirname,ReplaceIndex,item->dirname,item->date,tuser,tbytes,media);
}
fputs("</table></div>\n",fp_ou);
- write_html_trailer(fp_ou);
- fclose(fp_ou);
+ if (write_html_trailer(fp_ou)<0)
+ debuga(_("Write error in the index %s\n"),wdir);
+ if (fclose(fp_ou)==EOF)
+ debuga(_("Failed to close the index file %s - %s\n"),wdir,strerror(errno));
if (sortlist) {
for (i=0 ; i<nsort ; i++)
static void file_index_to_date_index(const char *entry)
{
- int y1, y2, d1, d2;
+ int y1, y2, m1, m2, d1, d2;
int i, j;
int ndirlen;
int monthlen;
- char m1[8], m2[8];
+ char sm1[8], sm2[8];
char olddir[MAXLEN], newdir[MAXLEN];
if(strlen(entry) < 19) return;
y1=0;
y2=0;
- memset(m1,0,sizeof(m1));
- memset(m2,0,sizeof(m2));
+ memset(sm1,0,sizeof(sm1));
+ memset(sm2,0,sizeof(sm2));
d1=0;
d2=0;
i=0;
for (j=0 ; entry[i] && isdigit(entry[i]) ; j++)
y1=y1*10+(entry[i++]-'0');
if (j!=4) return;
- for (j=0 ; j<sizeof(m1)-1 && entry[i] && isalpha(entry[i]) ; j++)
- m1[j]=entry[i++];
+ for (j=0 ; j<sizeof(sm1)-1 && entry[i] && isalpha(entry[i]) ; j++)
+ sm1[j]=entry[i++];
if (j!=3) return;
- m1[j]='\0';
+ sm1[j]='\0';
for (j=0 ; entry[i] && isdigit(entry[i]) ; j++)
d1=d1*10+(entry[i++]-'0');
if (j!=2) return;
for (j=0 ; entry[i] && isdigit(entry[i]) ; j++)
y2=y2*10+(entry[i++]-'0');
if (j!=4) return;
- for (j=0 ; j<sizeof(m2)-1 && entry[i] && isalpha(entry[i]) ; j++)
- m2[j]=entry[i++];
+ for (j=0 ; j<sizeof(sm2)-1 && entry[i] && isalpha(entry[i]) ; j++)
+ sm2[j]=entry[i++];
if (j!=3) return;
- m2[j]='\0';
+ sm2[j]='\0';
for (j=0 ; entry[i] && isdigit(entry[i]) ; j++)
d2=d2*10+(entry[i++]-'0');
if (j!=2) return;
for (j=0 ; entry[i] && isdigit(entry[i]) ; j++)
d1=d1*10+(entry[i++]-'0');
if (j!=2) return;
- for (j=0 ; j<sizeof(m1)-1 && entry[i] && isalpha(entry[i]) ; j++)
- m1[j]=entry[i++];
+ for (j=0 ; j<sizeof(sm1)-1 && entry[i] && isalpha(entry[i]) ; j++)
+ sm1[j]=entry[i++];
if (j!=3) return;
- m1[j]='\0';
+ sm1[j]='\0';
for (j=0 ; entry[i] && isdigit(entry[i]) ; j++)
y1=y1*10+(entry[i++]-'0');
if (j!=4) return;
for (j=0 ; entry[i] && isdigit(entry[i]) ; j++)
d2=d2*10+(entry[i++]-'0');
if (j!=2) return;
- for (j=0 ; j<sizeof(m2)-1 && entry[i] && isalpha(entry[i]) ; j++)
- m2[j]=entry[i++];
+ for (j=0 ; j<sizeof(sm2)-1 && entry[i] && isalpha(entry[i]) ; j++)
+ sm2[j]=entry[i++];
if (j!=3) return;
- m2[j]='\0';
+ sm2[j]='\0';
for (j=0 ; entry[i] && isdigit(entry[i]) ; j++)
y2=y2*10+(entry[i++]-'0');
if (j!=4) return;
} else
return;
- conv_month(m1);
- conv_month(m2);
+ m1=conv_month(sm1);
+ m2=conv_month(sm2);
ndirlen=sprintf(newdir,"%s%04d",outdir,y1);
if(access(newdir, R_OK) != 0) mkdir(newdir,0755);
- if(strcmp(m1,m2) != 0) ndirlen+=sprintf(newdir+ndirlen,"/%s-%s",m1,m2);
- else ndirlen+=sprintf(newdir+ndirlen,"/%s",m1);
+ if(m1 != m2) ndirlen+=sprintf(newdir+ndirlen,"/%02d-%02d",m1,m2);
+ else ndirlen+=sprintf(newdir+ndirlen,"/%02d",m1);
if(access(newdir, R_OK) != 0) mkdir(newdir,0755);
monthlen=ndirlen;
if(d1!=d2) ndirlen+=sprintf(newdir+ndirlen,"/%02d-%02d",d1,d2);
static void date_index_to_file_index(const char *entry)
{
int y1, next;
- int val1len;
+ int m1, m2;
int d1, d2;
+ int val1len;
int i, j;
char val1[MAXLEN];
- char m1[8], m2[8];
+ const char *sm1, *sm2;
char *str;
char newdir[MAXLEN], olddir[MAXLEN];
DIR *dirp2, *dirp3;
if(!isdigit(direntp2->d_name[0]) || !isdigit(direntp2->d_name[1])) continue;
i=0;
str=direntp2->d_name;
- for (j=0 ; j<sizeof(m1) && str[i] && isdigit(str[i]) ; j++)
- m1[j]=str[i++];
- if (j>=sizeof(m1)) continue;
- m1[j]='\0';
- conv_month_name(m1);
+ m1=0;
+ for (j=0 ; j<2 && str[i] && isdigit(str[i]) ; j++)
+ m1=(m1*10)+(str[i++]-'0');
+ if (j>=2) continue;
+ sm1=conv_month_name(m1);
if (str[i]=='-') {
i++;
- for (j=0 ; j<sizeof(m2) && str[i] && isdigit(str[i]) ; j++)
- m2[j]=str[i++];
- if (j>=sizeof(m2)) continue;
- m2[j]='\0';
- conv_month_name(m2);
+ m2=0;
+ for (j=0 ; j<2 && str[i] && isdigit(str[i]) ; j++)
+ m2=(m2*10)+(str[i++]-'0');
+ if (j>=2) continue;
+ sm2=conv_month_name(m2);
} else if (!str[i]) {
- strcpy(m2,m1);
+ sm2=sm1;
} else {
continue;
}
continue;
}
- if(strcmp(df,"u") == 0) sprintf(newdir,"%s%04d%s%02d-%04d%s%02d",outdir,y1,m1,d1,y1,m2,d2);
- else if(strcmp(df,"e") == 0) sprintf(newdir,"%s%02d%s%04d-%02d%s%04d",outdir,d1,m1,y1,d2,m2,y1);
+ if(strcmp(df,"u") == 0) sprintf(newdir,"%s%04d%s%02d-%04d%s%02d",outdir,y1,sm1,d1,y1,sm2,d2);
+ else if(strcmp(df,"e") == 0) sprintf(newdir,"%s%02d%s%04d-%02d%s%04d",outdir,d1,sm1,y1,d2,sm2,y1);
else continue;
sprintf(olddir,"%s%04d/%s/%s",outdir,y1,direntp2->d_name,direntp3->d_name);
if(rename(olddir,newdir)) {