⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logfile.c

📁 prozgui是一款Linxu下著名的下载工具
💻 C
字号:
/****************************************************************************** libprozilla - a download accelerator library Copyright (C) 2001 Kalum Somaratna This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA******************************************************************************/#include "common.h"#include "prozilla.h"#include "misc.h"#include "logfile.h"/*creates the log file and stores the info *//*If download is not NULL will store info about the downloads connection allocations to it too.*/int log_create_logfile(int num_connections, int file_size, char *url,		       download_t * download){  char buffer[PATH_MAX];  FILE *fp = NULL;  int i;  logfile lf;  memset(&lf, 0, sizeof(lf));  /*   * Compute the name of the logfile    */  snprintf(buffer, PATH_MAX, "%s/%s%s.log", download->log_dir,	   download->u.file, DEFAULT_FILE_EXT);  if (!(fp = fopen(buffer, "wb")))    {      /*       * fixme add the error displaing to the main function        */      download_show_message(download,			    _("Error opening file %s for writing: %s"),			    buffer, strerror(errno));      return -1;    }  lf.num_connections = num_connections;  lf.version = 1000;  lf.got_info = download == NULL ? 1 : 0;  lf.file_size = file_size;  lf.url_len = strlen(url);  /*Write the logfile header */  /* No of connections */  if (fwrite(&lf, 1, sizeof(lf), fp) != sizeof(lf))    {      download_show_message(download, _("Error writing to file %s: %s"),			    buffer, strerror(errno));      fclose(fp);      return -1;    }  /* Now we write the url to it */  if (fwrite(url, 1, strlen(url), fp) != strlen(url))    {      download_show_message(download, _("Error writing to file %s: %s"),			    buffer, strerror(errno));      fclose(fp);      return -1;    }  /*Now we write each of the connections start and end positions to the file if download is not null  */  if (download != NULL)    {      for (i = 0; i < download->num_connections; i++)	{	  pthread_mutex_lock(&download->pconnections[i]->access_mutex);	  if (fwrite	      (&download->pconnections[i]->local_startpos, 1,	       sizeof(download->pconnections[i]->local_startpos),	       fp) != sizeof(download->pconnections[i]->local_startpos))	    {	      pthread_mutex_unlock(&download->pconnections[i]->access_mutex);	      download_show_message(download, _("Error writing to file %s: %s"),				    buffer, strerror(errno));	      fclose(fp);	      return -1;	    }	  pthread_mutex_unlock(&download->pconnections[i]->access_mutex);	  pthread_mutex_lock(&download->pconnections[i]->access_mutex);	  if (fwrite	      (&download->pconnections[i]->orig_remote_startpos, 1,	       sizeof(download->pconnections[i]->orig_remote_startpos),	       fp) != sizeof(download->pconnections[i]->orig_remote_startpos))            {	      pthread_mutex_unlock(&download->pconnections[i]->access_mutex);	      download_show_message(download, _("Error writing to file %s: %s"),				    buffer, strerror(errno));	      fclose(fp);	      return -1;            }	  pthread_mutex_unlock(&download->pconnections[i]->access_mutex);	  pthread_mutex_lock(&download->pconnections[i]->access_mutex);	  if (fwrite	      (&download->pconnections[i]->remote_endpos, 1,	       sizeof(download->pconnections[i]->remote_endpos),	       fp) != sizeof(download->pconnections[i]->remote_endpos))	    {	      pthread_mutex_unlock(&download->pconnections[i]->access_mutex);	      download_show_message(download, _("Error writing to file %s: %s"),				    buffer, strerror(errno));	      fclose(fp);	      return -1;	    }	  pthread_mutex_unlock(&download->pconnections[i]->access_mutex);	  pthread_mutex_lock(&download->pconnections[i]->access_mutex);	  if (fwrite	      (&download->pconnections[i]->remote_bytes_received, 1,	       sizeof(download->pconnections[i]->remote_bytes_received),	       fp) != sizeof(download->pconnections[i]->remote_bytes_received))	    {	  pthread_mutex_unlock(&download->pconnections[i]->access_mutex);	      download_show_message(download, _("Error writing to file %s: %s"),				    buffer, strerror(errno));	      fclose(fp);	      return -1;	    }	  pthread_mutex_unlock(&download->pconnections[i]->access_mutex);	}    }  fclose(fp);  return 1;}/* returns 1 if the logfile exists, 0 if it doesn't and -1 on error*/int proz_log_logfile_exists(download_t * download){  char buffer[PATH_MAX];  int ret;  struct stat st_buf;  /*   * Compute the name of the logfile    */  snprintf(buffer, PATH_MAX, "%s/%s%s.log", download->log_dir,	   download->u.file, DEFAULT_FILE_EXT);  ret = stat(buffer, &st_buf);  if (ret == -1)  {    if (errno == ENOENT)      return 0;    else      return -1;  } else    return 1;}/* delete the log file */int proz_log_delete_logfile(download_t * download){  char buffer[PATH_MAX];  int ret;  snprintf(buffer, PATH_MAX, "%s/%s%s.log", download->log_dir,	   download->u.file, DEFAULT_FILE_EXT);  ret = unlink(buffer);  if (ret == -1)    {      if (errno == ENOENT)	{	  download_show_message(download, _("logfile doesn't exist"));	  return 1;	} else	  {	    download_show_message(download, "Error: Unable to delete the logfile: %s", strerror(errno));	    return -1;	  }    }  return 1;}/* Read the logfile into the logfile structure */int proz_log_read_logfile(logfile * lf, download_t * download,			  boolean load_con_info){  char buffer[PATH_MAX];  FILE *fp = NULL;  int i;  /*   * Compute the name of the logfile    */  snprintf(buffer, PATH_MAX, "%s/%s%s.log", download->log_dir,	   download->u.file, DEFAULT_FILE_EXT);  if (!(fp = fopen(buffer, "rb")))    {      /*       * fixme add the error displaing to the main function        */      download_show_message(download,			    _("Error opening file %s for reading: %s"),			    buffer, strerror(errno));      return -1;    }  if (fread(lf, 1, sizeof(logfile), fp) != sizeof(logfile))    {      fclose(fp);      return -1;    }  lf->url = kmalloc(lf->url_len + 1);  if (fread(lf->url, 1, lf->url_len, fp) != lf->url_len)    {      fclose(fp);      return -1;    }  lf->url[lf->url_len] = 0;  if (load_con_info == TRUE)    {      for (i = 0; i < lf->num_connections; i++)	{	  proz_debug("value before= %d", download->pconnections[i]->local_startpos);	  if (fread	      (&download->pconnections[i]->local_startpos, 1,	       sizeof(download->pconnections[i]->local_startpos),	       fp) != sizeof(download->pconnections[i]->local_startpos))            {	      download_show_message(download,				    _("Error reading from file %s: %s"), buffer,				    strerror(errno));	      fclose(fp);	      return -1;            }	  proz_debug("value after= %d", download->pconnections[i]->local_startpos);	  proz_debug("remote_pos before= %d", download->pconnections[i]->orig_remote_startpos);	  	  if (fread	  	      (&download->pconnections[i]->orig_remote_startpos, 1,	       sizeof(download->pconnections[i]->orig_remote_startpos),	       fp) != sizeof(download->pconnections[i]->orig_remote_startpos))	    {	      download_show_message(download,				    _("Error reading from file %s: %s"), buffer,				    strerror(errno));	      fclose(fp);	      return -1;	    }	  proz_debug("remote_pos after= %d", download->pconnections[i]->orig_remote_startpos);     	  proz_debug("remote_edndpos before= %d", download->pconnections[i]->remote_endpos);	  if (fread	      (&download->pconnections[i]->remote_endpos, 1,	       sizeof(download->pconnections[i]->remote_endpos),	       fp) != sizeof(download->pconnections[i]->remote_endpos))	    {	      download_show_message(download,				    _("Error reading from file %s: %s"), buffer,				    strerror(errno));	      fclose(fp);	      return -1;	    }     	  proz_debug("remote_endpos after= %d", download->pconnections[i]->remote_endpos);	  proz_debug("remote_bytes_received before= %d", download->pconnections[i]->remote_bytes_received);	  	  if (fread	  	      (&download->pconnections[i]->remote_bytes_received, 1,	       sizeof(download->pconnections[i]->remote_bytes_received),	       fp) != sizeof(download->pconnections[i]->remote_bytes_received))	    {	      download_show_message(download,				    _("Error reading from file %s: %s"), buffer,				    strerror(errno));	      fclose(fp);	      return -1;	    }	  proz_debug("remote_bytes_received after= %d", download->pconnections[i]->remote_bytes_received);	}    }  fclose(fp);  return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -