summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Makefile.am1
-rw-r--r--src/file.cc27
-rw-r--r--src/file.h11
-rw-r--r--src/info.cc74
-rw-r--r--src/info.h17
-rw-r--r--src/info_console.cc4
-rw-r--r--src/info_console.h4
-rw-r--r--src/info_gui.cc5
-rw-r--r--src/info_gui.h1
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);
}
}
diff --git a/src/file.h b/src/file.h
index e093da9..6326528 100644
--- a/src/file.h
+++ b/src/file.h
@@ -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);
+}
diff --git a/src/info.h b/src/info.h
index 7a9147b..b142a33 100644
--- a/src/info.h
+++ b/src/info.h
@@ -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__*/