// écrire backblue.gif int verif_backblue(httrackp* opt, const char* base) { int* done = &opt->state.verif_backblue_done; int ret=0; // if (!base) { // init *done=0; return 0; } if ( (!*done) || (fsize(fconcat(OPT_GET_BUFF(opt), base,"backblue.gif")) != HTS_DATA_BACK_GIF_LEN)) { FILE* fp = filecreate(&opt->state.strc, fconcat(OPT_GET_BUFF(opt), base,"backblue.gif")); *done=1; if (fp) { if (fwrite(HTS_DATA_BACK_GIF,HTS_DATA_BACK_GIF_LEN,1,fp) != HTS_DATA_BACK_GIF_LEN) ret=1; fclose(fp); usercommand(opt,0,NULL,fconcat(OPT_GET_BUFF(opt), base,"backblue.gif"),"",""); } else ret=1; // fp = filecreate(&opt->state.strc, fconcat(OPT_GET_BUFF(opt), base,"fade.gif")); if (fp) { if (fwrite(HTS_DATA_FADE_GIF,HTS_DATA_FADE_GIF_LEN,1,fp) != HTS_DATA_FADE_GIF_LEN) ret=1; fclose(fp); usercommand(opt,0,NULL,fconcat(OPT_GET_BUFF(opt), base,"fade.gif"),"",""); } else ret=1; } return ret; }
int main(int argc, char *argv[]) { if(argc < 2) { fprintf(stderr,"Usage: touch filepath...\n"); exit(0); } filecreate(argv[1]); return 0; }
/* Code mainly written by Nicolas BENOIT */ static int run_launch_mms(MMSDownloadStruct* pStruct) { lien_back* back = pStruct->pBack; httrackp* opt = pStruct->pOpt; /* */ char url[HTS_URLMAXSIZE*2]; char catbuff[CATBUFF_SIZE]; char catbuff2[CATBUFF_SIZE]; MMS *mms; FILE *f; ssize_t len_written; uint64_t total_len_written; int delay = opt->mms_maxtime; time_t end = time(NULL) + delay; short checkPending = 0; ssize_t existingSize = fsize(back->url_sav); // effacer strcpybuff(back->r.msg,""); back->status=STATUS_FTP_TRANSFER; back->r.statuscode=HTTP_OK; back->r.size=0; /* Create file */ if (existingSize > 0) { /* back->r.out = fileappend(back->url_sav); */ (void) unlink(fconcat(catbuff,back->url_sav, ".old")); if (rename(fconcat(catbuff,back->url_sav, ""), fconcat(catbuff2,back->url_sav, ".old")) == 0) { checkPending = 1; } back->r.out = filecreate(&pStruct->pOpt->state.strc, back->url_sav); } else { back->r.out = filecreate(&pStruct->pOpt->state.strc, back->url_sav); } if ((f = back->r.out) != NULL) { // create mms resource strcpybuff(url, back->url_adr); /* mms:// */ strcatbuff(url, back->url_fil); if ( ( mms = mms_create( url, f, NULL, 0, 1 ) ) != NULL ) { if ( mms_connect ( mms ) == 0 ) { if ( mms_handshake ( mms ) == 0 ) { if ( ( len_written = mms_write_stream_header ( mms ) ) != -1 ) { total_len_written = len_written; HTS_STAT.HTS_TOTAL_RECV += len_written; /* not modified */ if (checkPending) { if (mms->is_live != MMS_LIVE && mms->expected_file_size == existingSize + 50 /* Why 50 additional bytes declared ?? */ ) // abort download { fclose(back->r.out); f = back->r.out = NULL; if (unlink(fconcat(catbuff, back->url_sav, "")) == 0 && rename(fconcat(catbuff, back->url_sav, ".old"), fconcat(catbuff2, back->url_sav, "")) == 0) { back->r.notmodified = 1; back->r.statuscode = HTTP_OK; strcpybuff(back->r.msg, "Not modified"); } else { back->r.statuscode = HTTP_INTERNAL_SERVER_ERROR; strcpybuff(back->r.msg, "Unable to rename previous file (not updated)"); } } else { (void) unlink(fconcat(catbuff, back->url_sav, ".old")); } } /* begin rip */ if ( f != NULL && mms_begin_rip ( mms ) == 0 ) { if ( mms->is_live != MMS_LIVE ) { back->r.totalsize = mms->expected_file_size; back->r.totalsize -= 50; /* Why 50 additional bytes declared ?? */ } else back->r.totalsize = -1; /* Start download */ while ( !stop_mms(back) ) { len_written = mms_write_stream_data ( mms ); if ( len_written == 0 ) { break; } else if ( len_written == -1 ) { back->r.statuscode = HTTP_INTERNAL_SERVER_ERROR; strcpybuff(back->r.msg, "Unable to write stream data"); break; } total_len_written += len_written; back->r.size = total_len_written; HTS_STAT.HTS_TOTAL_RECV += len_written; fflush ( f ); if ( delay != 0 && end <= time(NULL) ) { delay = -1; back->r.statuscode = HTTP_OK; strcpybuff(back->r.msg, "Download interrupted"); break; } } // while back->r.statuscode = HTTP_OK; /* Finished */ } else if (f != NULL) { back->r.statuscode = HTTP_INTERNAL_SERVER_ERROR; strcpybuff(back->r.msg, "Can not begin ripping"); } } else { back->r.statuscode = HTTP_INTERNAL_SERVER_ERROR; strcpybuff(back->r.msg, "Can not write stream header"); } } else { back->r.statuscode = HTTP_INTERNAL_SERVER_ERROR; strcpybuff(back->r.msg, "Can not handshake"); } mms_disconnect ( mms ); } else { back->r.statuscode = HTTP_INTERNAL_SERVER_ERROR; strcpybuff(back->r.msg, "Can not connect"); } mms_destroy ( mms ); } else { back->r.statuscode = HTTP_INTERNAL_SERVER_ERROR; strcpybuff(back->r.msg, "Can not create mms resource"); } } else { back->r.statuscode = HTTP_INTERNAL_SERVER_ERROR; strcpybuff(back->r.msg, "Unable to open local output file"); } return 0; }