diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Makefile.am | 1 | ||||
| -rw-r--r-- | src/file.cc | 27 | ||||
| -rw-r--r-- | src/file.h | 11 | ||||
| -rw-r--r-- | src/info.cc | 74 | ||||
| -rw-r--r-- | src/info.h | 17 | ||||
| -rw-r--r-- | src/info_console.cc | 4 | ||||
| -rw-r--r-- | src/info_console.h | 4 | ||||
| -rw-r--r-- | src/info_gui.cc | 5 | ||||
| -rw-r--r-- | src/info_gui.h | 1 | 
9 files changed, 135 insertions, 9 deletions
| diff --git a/src/Makefile.am b/src/Makefile.am index 007f61b..9c7d187 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -17,6 +17,7 @@ miav_SOURCES = $(shell  if [ $QT_CXXFLAGS ] ; then ../tools/MocList cc; fi ) \  	frame.cc \  	img_encoder.cc \  	img_file.cc \ +	info.cc \  	info_console.cc \  	info_gui.cc \  	mainwindow.cc \ diff --git a/src/file.cc b/src/file.cc index ce06d67..1a94150 100644 --- a/src/file.cc +++ b/src/file.cc @@ -31,6 +31,10 @@  /*   * $Log$ + * Revision 1.2  2005/06/13 20:38:19  deva + * Added some logfile code. + * Enhanced the file object... now ready to hook into mov_encoder + *   * Revision 1.1  2005/06/09 17:54:00  deva   * New file object, that takes care of uniqueness and counts up number in   * filename, when grown too big. @@ -51,10 +55,12 @@  #include <stdlib.h> -File::File(char *fn, char* ext) +File::File(char *fn, char* ext, Info *i)  {    char path[256]; +  info = i; +    filename = (char*)malloc(strlen(fn) + 1);    extension = (char*)malloc(strlen(ext) + 1); @@ -62,6 +68,7 @@ File::File(char *fn, char* ext)    strcpy(extension, ext);    num = 0; +  seqnum = 0;    fd = -1;    int pos = (int)strrchr(filename, '/'); @@ -92,18 +99,29 @@ int File::Open()    fd = -1;    while(fd == -1) { -    sprintf(fname, "%s%.3d.%s", filename, num, extension); +    if(seqnum) { +      // A sequence number > 0 +      sprintf(fname, "%s%.3d-%d.%s", filename, num, seqnum, extension); +    } else { +      // A sequence number of 0 +      sprintf(fname, "%s%.3d.%s", filename, num, extension); +    }      fd = open(fname, O_CREAT | O_WRONLY | O_SYNC | O_EXCL, //| O_LARGEFILE                S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);      num ++;      // If more than 1000 files are created in one day, something is terribly wrong!      if(num > 1000) { -      fprintf(stderr, "Something is wrong with tha path [%s]!\n", fname); +      info->error("Something is wrong with the path [%s]!\n", fname);        exit(1);      }    } + +  seqnum ++; + +  info->log("Opened the file %s for output.\n", fname); +    return 0;  } @@ -114,10 +132,11 @@ int File::Write(void* data, int size)    w = write(fd, data, size);    if(w != size) { +    info->log("Wrapping file.\n");      Open();      w = write(fd, data, size);      if(w != size) { -      fprintf(stderr, "Out of diskspace!\n"); +      info->error("Out of diskspace!\n");        exit(1);      }    } @@ -31,6 +31,10 @@  /*   * $Log$ + * Revision 1.2  2005/06/13 20:38:19  deva + * Added some logfile code. + * Enhanced the file object... now ready to hook into mov_encoder + *   * Revision 1.1  2005/06/09 17:54:00  deva   * New file object, that takes care of uniqueness and counts up number in   * filename, when grown too big. @@ -41,22 +45,27 @@  #ifndef __MIAV_FILE_H__  #define __MIAV_FILE_H__ +#include "info.h" +  #include <string.h>  using namespace std;  class File {  public: -  File(char *filename, char* ext); +  File(char *filename, char* ext, Info* info);    ~File();    int Write(void* data, int size);  private: +  Info* info; +    int Open();    int fd;    int num; +  int seqnum;    char* filename;    char* extension; diff --git a/src/info.cc b/src/info.cc new file mode 100644 index 0000000..4278326 --- /dev/null +++ b/src/info.cc @@ -0,0 +1,74 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            info.cc + * + *  Mon Jun 13 22:16:18 CEST 2005 + *  Copyright  2005 Bent Bisballe + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of MIaV. + * + *  MIaV 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. + * + *  MIaV 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 MIaV; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ + +/* + * $Id$ + */ + +/* + * $Log$ + * Revision 1.1  2005/06/13 20:38:19  deva + * Added some logfile code. + * Enhanced the file object... now ready to hook into mov_encoder + * + */ + +#include <config.h> +#include "info.h" + +Info::Info() { +  pthread_mutex_init (&mutex, NULL); +} + +void Info::log(char *fmt, ...) +{ +  //  const time_t t; +  FILE *fp; +  char buf[1024]; +   +  pthread_mutex_lock(&mutex); +  // Beginning of safezone +   +  fp = fopen(log_filename.c_str(), "a"); +  if(!fp) { +    fprintf(stderr, "Log file %s could not be opened in writemode.\n", log_filename.c_str()); +    return; +  } +   +  va_list argp; +  va_start(argp, fmt); +  vsprintf(buf, fmt, argp); +  va_end(argp); +   +  time_t t = time(NULL); +  fprintf(fp, "%s miav[%d]", ctime(&t), buf, getpid()); +   +  fclose(fp); +   +  // End of safezone +  pthread_mutex_unlock(&mutex); +} @@ -37,14 +37,29 @@  #ifndef __MIAV_INFO_H__  #define __MIAV_INFO_H__ +#include <time.h> +#include <sys/types.h> +#include <unistd.h> +#include <stdarg.h> +#include <pthread.h> +#include <semaphore.h> +#include <string> +using namespace std; +  class Info {  public: -  Info() {} +  Info(); +    virtual ~Info() {}    virtual void error(char* fmt, ...) = 0;    virtual void warn(char* fmt, ...) = 0;    virtual void info(char* fmt, ...) = 0; +  void log(char* fmt, ...); + +protected: +  pthread_mutex_t mutex; +  string log_filename;  };  #endif/*__MIAV_INFO_H__*/ diff --git a/src/info_console.cc b/src/info_console.cc index a0ca236..f703a3f 100644 --- a/src/info_console.cc +++ b/src/info_console.cc @@ -36,12 +36,14 @@  #include <config.h>  #include "info_console.h" +#include "miav_config.h" +  #include <stdio.h>  #include <stdarg.h>  InfoConsole::InfoConsole(): Info()  { -  pthread_mutex_init (&mutex, NULL); +  log_filename = *config->readString("server_log_file");  }  InfoConsole::~InfoConsole() diff --git a/src/info_console.h b/src/info_console.h index 019c8b7..5422235 100644 --- a/src/info_console.h +++ b/src/info_console.h @@ -42,6 +42,9 @@  #include <pthread.h>  #include <semaphore.h> +#include <string> +using namespace std; +  class InfoConsole: public Info {  public:    InfoConsole(); @@ -52,7 +55,6 @@ public:    void info(char* fmt, ...);  private: -  pthread_mutex_t mutex;  };  #endif/*__MIAV_INFO_CONSOLE_H__*/ diff --git a/src/info_gui.cc b/src/info_gui.cc index db23827..2559402 100644 --- a/src/info_gui.cc +++ b/src/info_gui.cc @@ -38,6 +38,8 @@  #include "info_gui.h" +#include "miav_config.h" +  #include <stdio.h>  #include <stdarg.h> @@ -59,6 +61,8 @@ bool InfoEventHandler::eventFilter( QObject *o, QEvent *e )  InfoGui::InfoGui(QApplication *a, QWidget *p): Info()  { +  log_filename = *config->readString("client_log_file"); +    qapp = a;    parent = p; @@ -140,4 +144,5 @@ void InfoGui::info(char *fmt, ...)    showmsg(buf, TXT_INFO_TITLE, ICON_INFO);  } +  #endif/*USE_GUI*/ diff --git a/src/info_gui.h b/src/info_gui.h index 8df1985..44729c2 100644 --- a/src/info_gui.h +++ b/src/info_gui.h @@ -86,7 +86,6 @@ private:    QApplication *qapp;    QWidget *parent; -  pthread_mutex_t mutex;  };  #endif/*__MIAV_INFO_GUI_H__*/ | 
