diff --git a/src/Makefile.am b/src/Makefile.am index cf980f87..aef72a82 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -80,6 +80,5 @@ EXTRA_DIST = rend-howl.c rend-posix.c rend-osx.c scan-mpc.c \ scan-ogg.c scan-flac.c db-sql.c db-sql.h \ db-sql-sqlite2.h db-sql-sqlite2.c \ db-sql-sqlite3.h db-sql-sqlite3.c \ - w32-eventlog.c w32-eventlog.h w32-service.c w32-service.h \ - os-win32.h os-win32.c win32.h db-gdbm.c db-gdbm.h \ + db-gdbm.c db-gdbm.h \ ff-plugins.h ff-dbstruct.h upnp.c upnp.h ff-plugin-events.h diff --git a/src/os-win32.c b/src/os-win32.c deleted file mode 100644 index 75958e88..00000000 --- a/src/os-win32.c +++ /dev/null @@ -1,581 +0,0 @@ -/* $Id$ - * - */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include "daapd.h" -#include "win32.h" -#include "err.h" -#include "os-win32.h" -#include "plugin.h" -#include "w32-eventlog.h" -#include "w32-service.h" -#include "util.h" - -/* Globals */ -static WSADATA w32_wsadata; -static os_serviceflag = 0; -static pthread_t os_service_tid; -static os_initialized=0; -static pthread_mutex_t os_mutex=PTHREAD_MUTEX_INITIALIZER; -static char *os_drive_maps[26]; -static int os_maps_init=0; - - -/* Forwards */ -static void _os_socket_startup(void); -static void _os_socket_shutdown(void); -static void _os_lock(void); -static void _os_unlock(void); -static BOOL WINAPI _os_cancelhandler(DWORD dwCtrlType); -char *_os_filepath(char *file); - - -extern int gettimeout(struct timeval end,struct timeval *timeoutp); - -/* Globals */ -char os_config_file[PATH_MAX]; -/* "official" os interface functions */ - -/** - * initialize the os-specific stuff. this would include - * backgrounding (or starting as service), setting up - * signal handlers (or ctrl-c handlers), etc - * - * @param background whether or not to start in background (service) - * @param runas we'll ignore this, as it's a unix thang - * @returns TRUE on success, FALSE otherwise - */ -int os_init(int foreground, char *runas) { - int err; - char *inifile; - char drive_buffer[4]; - char drive_map[PATH_MAX]; - int drive_letter; - - inifile=_os_filepath("mapping.ini"); - DPRINTF(E_LOG,L_MISC,"Building drive mapping table from %s\n",inifile); - for(drive_letter = 'a'; drive_letter <= 'z'; drive_letter++) { - sprintf(drive_buffer,"%c",drive_letter); - GetPrivateProfileString("mapping",drive_buffer,"",drive_map,PATH_MAX,inifile); - if(strlen(drive_map)) { - os_drive_maps[drive_letter - 'a'] = strdup(drive_map); - DPRINTF(E_LOG,L_MISC,"Mapped %c to %s\n",drive_letter,drive_map); - } else { - os_drive_maps[drive_letter - 'a'] = NULL; - } - } - os_maps_init=1; - free(inifile); - - if(!foreground) { - /* startup as service */ - os_serviceflag = 1; - if((err=pthread_create(&os_service_tid,NULL,service_startup,NULL))) { - DPRINTF(E_LOG,L_MISC,"Could not spawn thread: %s\n",strerror(err)); - return FALSE; - } - } else { - /* let's set a ctrl-c handler! */ - SetConsoleCtrlHandler(_os_cancelhandler,TRUE); - } - return TRUE; -} - -/** - * wait for signals - * - * don't care about signals on win32, so we'll just sleep - */ -void os_wait(int seconds) { - Sleep(seconds * 1000); -} -/** - * shutdown the system-specific stuff started in os_init. - */ -void os_deinit(void) { - if(os_serviceflag) { - /* then we need to stop the service */ - SetConsoleCtrlHandler(_os_cancelhandler,FALSE); - service_shutdown(0); - } -} - -/** - * open the syslog (eventlog) - */ -int os_opensyslog(void) { - elog_register(); - return elog_init(); -} - -/** - * close the syslog (eventlog) - */ -int os_closesyslog(void) { - return elog_deinit(); -} - -/** - * write a message to the syslog - * - * @param level what level of message (1-10) - * @param msg message to write - * @return TRUE on success, FALSE otherwise - */ -int os_syslog(int level, char *msg) { - return elog_message(level, msg); -} - -/** - * change the owner of a file to a specific user. This is - * ignored on windows - */ -extern int os_chown(char *path, char *user) { - return TRUE; -} - - -int os_signal_server(int what) { - /* this could really control the service somehow */ - fprintf(stderr,"This function is unimplemented on win32\n"); - exit(-1); -} - -int os_register(void) { - service_register(); - elog_register(); - - return TRUE; -} - -int os_unregister(void) { - service_unregister(); - elog_unregister(); - - return TRUE; -} - -static BOOL WINAPI _os_cancelhandler(DWORD dwCtrlType) { - DPRINTF(E_LOG,L_MISC,"Shutting down with a console event\n"); - config.stop = 1; - return TRUE; -} - -/* from the gnu c library */ -char *os_strsep(char **stringp, const char *delim) { - char *begin, *end; - - begin = *stringp; - if (begin == NULL) - return NULL; - - /* A frequent case is when the delimiter string contains only one - character. Here we don't need to call the expensive `strpbrk' - function and instead work using `strchr'. */ - if (delim[0] == '\0' || delim[1] == '\0') { - char ch = delim[0]; - - if (ch == '\0') { - end = NULL; - } else { - if (*begin == ch) - end = begin; - else if (*begin == '\0') - end = NULL; - else - end = strchr (begin + 1, ch); - } - } else { - /* Find the end of the token. */ - end = strpbrk (begin, delim); - } - - if (end) { - /* Terminate the token and set *STRINGP past NUL character. */ - *end++ = '\0'; - *stringp = end; - } else { - /* No more delimiters; this is the last token. */ - *stringp = NULL; - } - return begin; -} - -/** - * get uid of current user. this is really stubbed, as it's only used - * as a check during startup (it fails normally if you run non-root, as it means - * that it can't drop privs, can't write pidfile, etc) - */ -int os_getuid(void) { - return 0; -} - - -int os_gettimeofday (struct timeval *tv, struct timezone* tz) { - union { - long long ns100; /*time since 1 Jan 1601 in 100ns units */ - FILETIME ft; - } now; - - GetSystemTimeAsFileTime (&now.ft); - tv->tv_usec = (long) ((now.ns100 / 10LL) % 1000000LL); - tv->tv_sec = (long) ((now.ns100 - 116444736000000000LL) / 10000000LL); - - if(tz) { - tz->tz_minuteswest = _timezone; - } - return (0); -} - - -/** - * initialize winsock - */ -void _os_socket_startup(void) { - WORD minver; - int err; - - minver = MAKEWORD( 2, 2 ); - - err = WSAStartup( minver, &w32_wsadata ); - if ( err != 0 ) { - DPRINTF(E_FATAL,L_MISC,"Could not initialize winsock\n"); - } -} - -/** - * deinitialize winsock - */ -void _os_socket_shutdown(void) { - WSACleanup(); -} - -/* COMPAT FUNCTIONS */ - - -/* can't be worse then strerror */ -char *os_strerror (int error_no) { - static char buf[500]; - - if (error_no == 0) - error_no = GetLastError (); - - buf[0] = '\0'; - if (!FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, - error_no, - 0, /* choose most suitable language */ - buf, sizeof (buf), NULL)) - sprintf (buf, "w32 error %u", error_no); - return buf; -} - -/** - * get the default config path. there might be an argument to be made - * for using the install path as determined by registry, but might - * just be easiest to grab the directory the executable is running from - * - * @returns path to config file (from static buffer) - */ -char *os_configpath(void) { - char *config_path = _os_filepath("mt-daapd.conf"); - char *working_path = _os_filepath(""); - - strcpy(os_config_file,config_path); - free(config_path); - - if(_chdir(working_path) == -1) { - DPRINTF(E_LOG,L_MISC,"Could not chdir to %s... using c:\\\n",working_path); - if(_chdir("c:\\") == -1) { - DPRINTF(E_FATAL,L_MISC,"Could not chdir to c:\\... aborting\n"); - } - } - free(working_path); - - DPRINTF(E_DBG,L_MISC,"Using config file %s\n",os_config_file); - return os_config_file; -} - -char *_os_filepath(char *file) { - char drive[_MAX_DRIVE]; - char dir[_MAX_DIR]; - char path[PATH_MAX]; - - GetModuleFileName(NULL,path,PATH_MAX); - _splitpath(path,drive,dir,NULL,NULL); - _makepath(path,drive,dir,NULL,NULL); - strcat(path,file); - return strdup(path); -} - - -/** - * get the path of the executable. Caller must free. - * - */ -char *os_apppath(char *junk) { - char app_path[PATH_MAX]; - - GetModuleFileName(NULL,app_path,PATH_MAX); - return strdup(app_path); -} - - -/** - * Determine if an address is local or not - * - * @param hostaddr the address to test for locality - */ -int os_islocaladdr(char *hostaddr) { - char hostname[256]; - struct hostent *ht; - int index; - - DPRINTF(E_DBG,L_MISC,"Checking if %s is local\n",hostaddr); - if(strncmp(hostaddr,"127.",4) == 0) - return TRUE; - - gethostname(hostname, sizeof(hostname)); - ht=gethostbyname(hostname); - - index=0; - while(ht->h_addr_list[index] != NULL) { -/* - if(memcmp(&hostaddr,h_addr_list[index],4) == 0) - return TRUE; -*/ - if(strcmp(inet_ntoa(*(struct in_addr *)ht->h_addr_list[index]),hostaddr) == 0) { - DPRINTF(E_DBG,L_MISC,"Yup!\n"); - return TRUE; - } - index++; - } - - DPRINTF(E_DBG,L_MISC,"Nope!\n"); - return FALSE; -} - - -/** - * Lock the mutex. This is used for initialization stuff, among - * other things (?) - */ -void _os_lock(void) { - int err; - - if((err=pthread_mutex_lock(&os_mutex))) { - DPRINTF(E_FATAL,L_MISC,"Cannot lock mutex\n"); - } -} - -/** - * Unlock the os mutex - */ -void _os_unlock(void) { - int err; - - if((err=pthread_mutex_unlock(&os_mutex))) { - DPRINTF(E_FATAL,L_MISC,"Cannot unlock mutex\n"); - } -} - -/** - * load a loadable library - */ -void *os_loadlib(char **pe, char *path) { - void *retval; - UINT old_mode; - - old_mode = SetErrorMode(SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS); - retval = (void*)LoadLibrary(path); - if(!retval) { - if(pe) *pe = strdup(os_strerror(0)); - } - SetErrorMode(old_mode); - return retval; -} - -void *os_libfunc(char **pe, void *handle, char *function) { - void *retval; - char *e; - - retval = GetProcAddress((HMODULE)handle, function); - if(!retval) { - if(pe) { - *pe = strdup(os_strerror(0)); - e = *pe; - while((e[strlen(e) - 1] == '\n') || (e[strlen(e)-1] == '\r')) - e[strlen(e)-1] = '\0'; - } - } - return retval; -} - -int os_unload(void *handle) { - FreeLibrary(handle); - return TRUE; -} - -// Unicody stuff - -/* opendir/closedir/readdir emulation taken from emacs. Thanks. :) */ -DIR *os_opendir(char *filename) { - DIR *dirp; - - /* Opening is done by FindFirstFile. However, a read is inherent to - this operation, so we defer the open until read time. */ - - if (!(dirp = (DIR *) malloc (sizeof (DIR)))) - return NULL; - - dirp->dir_find_handle = INVALID_HANDLE_VALUE; - dirp->dd_fd = 0; - dirp->dd_loc = 0; - dirp->dd_size = 0; - - strncpy (dirp->dir_pathname, filename,PATH_MAX); - dirp->dir_pathname[PATH_MAX] = '\0'; - - return dirp; -} - -void os_closedir(DIR *dirp) { - /* If we have a find-handle open, close it. */ - if (dirp->dir_find_handle != INVALID_HANDLE_VALUE) { - FindClose(dirp->dir_find_handle); - } - free((char *) dirp); -} - - -int os_readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) { - char filename[PATH_MAX + 1]; - WCHAR utf16[PATH_MAX + 1]; - int ln; - - if (dirp->dir_find_handle == INVALID_HANDLE_VALUE) { - /* If we aren't dir_finding, do a find-first, otherwise do a find-next. */ - strncpy (filename, dirp->dir_pathname,PATH_MAX - 3); - ln = (int) strlen (filename) - 1; - if(filename[ln] != '\\') - strcat (filename, "\\"); - strcat (filename, "*"); - - /* filename is utf-8... let's convert to unicode */ - util_utf8toutf16((unsigned char *)&utf16,sizeof(utf16),filename,(int)strlen(filename)); - - dirp->dir_find_handle = FindFirstFileW(utf16, &dirp->dir_find_data); - - if (dirp->dir_find_handle == INVALID_HANDLE_VALUE) { - *result=NULL; - return 2; - } - } else { - if (!FindNextFileW(dirp->dir_find_handle, &dirp->dir_find_data)) { - *result = NULL; - return 0; - } - } - - /* Emacs never uses this value, so don't bother making it match - value returned by stat(). */ - entry->d_ino = 1; - - memset(entry->d_name,0,MAXNAMLEN+1); - util_utf16toutf8(entry->d_name,MAXNAMLEN+1, - (unsigned char *)&dirp->dir_find_data.cFileName, - (int)wcslen(dirp->dir_find_data.cFileName)*2); - entry->d_namlen = (int) strlen (entry->d_name); - - entry->d_reclen = sizeof (struct dirent) - MAXNAMLEN + 3 + - entry->d_namlen - entry->d_namlen % 4; - - entry->d_type = 0; - if(dirp->dir_find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { - entry->d_type |= DT_DIR; - } else if(dirp->dir_find_data.dwFileAttributes & FILE_ATTRIBUTE_NORMAL) { - entry->d_type |= DT_REG; - } - - /* - if (dir_is_fat) - _strlwr (dir_static.d_name); - else if (!NILP (Vw32_downcase_file_names)) { - register char *p; - for (p = dir_static.d_name; *p; p++) - if (*p >= 'a' && *p <= 'z') - break; - if (!*p) - _strlwr (dir_static.d_name); - } - */ - *result = entry; - return 0; -} - -/** - * this is now pretty close to a true realpath implementation - */ -char *os_realpath(const char *pathname, char *resolved_path) { - char *ptr; - WCHAR utf16_rel_path[PATH_MAX+1]; - WCHAR utf16_path[PATH_MAX+1]; - char *mapped_path; - - /* need to take the utf-8 and convert to utf-16, then _fullpath, then back */ - util_utf8toutf16((unsigned char *)&utf16_rel_path,PATH_MAX * sizeof(WCHAR),(char*)pathname,(int)strlen(pathname)); - if(!_wfullpath(utf16_path,utf16_rel_path,PATH_MAX)) { - DPRINTF(E_FATAL,L_MISC,"Could not realpath %s\n",pathname); - } - util_utf16toutf8((unsigned char *)resolved_path,PATH_MAX,(unsigned char *)&utf16_path, - util_utf16_byte_len((unsigned char *)utf16_path)); - - ptr = resolved_path; - while(*ptr) { -// *ptr = tolower(*ptr); - if(*ptr == '/') - *ptr = '\\'; - ptr++; - } - - while(resolved_path[strlen(resolved_path)-1] == '\\') { - resolved_path[strlen(resolved_path)-1] = '\x0'; - } - - /* convert drive letter to unc path? */ - if((resolved_path[0] != '\\')&&(os_maps_init)){ - if((mapped_path = os_drive_maps[tolower(resolved_path[0]) - 'a'])) { - /* replace the x:\ with the path */ - memmove(&resolved_path[strlen(mapped_path)],&resolved_path[3],strlen(resolved_path)-2); /* get the null */ - memcpy(resolved_path,mapped_path,strlen(mapped_path)); - } - } - - return &resolved_path[0]; -} - - -int os_stat(const char *path, struct _stat *sb) { - WCHAR utf16_path[PATH_MAX+1]; - - memset(utf16_path,0,sizeof(utf16_path)); - util_utf8toutf16((unsigned char *)&utf16_path,PATH_MAX * 2,(char*)path,(int)strlen(path)); - - return _wstat(utf16_path,sb); -} - -int os_lstat(const char *path, struct _stat *sb) { - return os_stat(path,sb); -} - - diff --git a/src/os-win32.h b/src/os-win32.h deleted file mode 100644 index 028f6c29..00000000 --- a/src/os-win32.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * $Id$ - * - * os glue stuff, for functions that vary too greatly between - * win32 and unix - */ - -#ifndef _OS_WIN32_H_ -#define _OS_WIN32_H_ - -#include "stdlib.h" - -#define MAXNAMLEN 255 -#define DIRBLKSIZ 512 -#define PATHSEP '\\' -#define PATHSEP_STR "\\" -#define S_ISDIR(a) ((a) & S_IFDIR) - -struct timezone { - int tz_minuteswest; - int tz_dsttime; -}; - -#define DT_DIR 1 -#define DT_REG 2 -#define DT_LNK 4 - -#define W_OK 2 -#define R_OK 4 - -struct dirent { /* data from readdir() */ - - long d_ino; /* inode number of entry */ - unsigned short d_reclen; /* length of this record */ - unsigned short d_namlen; /* length of string in d_name */ - int d_type; /* flags */ - char d_name[MAXNAMLEN+1]; /* name of file */ -}; - -typedef struct { - int dd_fd; /* file descriptor */ - int dd_loc; /* offset in block */ - int dd_size; /* amount of valid data */ - char dd_buf[DIRBLKSIZ]; /* directory block */ - HANDLE dir_find_handle; - char dir_pathname[PATH_MAX+1]; - WIN32_FIND_DATAW dir_find_data; -} DIR; - -/* win32-specific functions -- set up service, etc */ -extern int os_register(void); -extern int os_unregister(void); -extern char *os_configpath(void); -extern int os_getuid(void); - -/* missing win32 functions */ -extern char *os_strsep(char **stringp, const char *delim); -extern char *os_realpath(const char *pathname, char *resolved_path); -extern int os_gettimeofday (struct timeval *tv, struct timezone* tz); -extern int os_readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); -extern void os_closedir(DIR *dirp); -extern DIR *os_opendir(char *filename); -extern char *os_strerror (int error_no); - -#endif /* _OS_WIN32_H_ */ diff --git a/src/os.h b/src/os.h index b084cd1a..df37f512 100644 --- a/src/os.h +++ b/src/os.h @@ -49,10 +49,6 @@ extern int os_islocaladdr(char *hostaddr); extern char *os_apppath(char *parm); extern int os_signal_server(int what); /* signal a running server */ -#ifdef WIN32 -# include "os-win32.h" -#else -# include "os-unix.h" -#endif +#include "os-unix.h" #endif diff --git a/src/plugins/ssc-wma.cpp b/src/plugins/ssc-wma.cpp deleted file mode 100644 index ada31dd4..00000000 --- a/src/plugins/ssc-wma.cpp +++ /dev/null @@ -1,354 +0,0 @@ -/* - * $Id: $ - * - * Win32-only transcoder for WMA using the Windows Media Format SDK. - */ - -#define _WIN32_DCOM - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include - -#include -#include -#include - - -#include "ff-plugins.h" - -#ifndef TRUE -# define TRUE 1 -# define FALSE 0 -#endif - -typedef struct tag_ssc_handle { - int state; - IWMSyncReader *pReader; - int errnum; - - int duration; - char wav_header[44]; - int wav_offset; - - INSSBuffer *pBuffer; - BYTE *pdata; - DWORD data_len; - int offset; - - DWORD channels; - DWORD sample_rate; - WORD bits_per_sample; -} SSCHANDLE; - -#define STATE_DONE 0 -#define STATE_OPEN 1 -#define STATE_STREAMOPEN 2 - -#define SSC_WMA_E_SUCCESS 0 -#define SSC_WMA_E_NOCOM 1 -#define SSC_WMA_E_NOREADER 2 -#define SSC_WMA_E_OPEN 3 -#define SSC_WMA_E_READ 4 - -char *_ssc_wma_errors[] = { - "Success", - "Could not initialize COM", - "Could not create WMA reader", - "Could not open file", - "Error while reading file" -}; - - - -/* Forwards */ -void *ssc_wma_init(void); -void ssc_wma_deinit(void *pv); -int ssc_wma_open(void *pv, MP3FILE *pmp3); -int ssc_wma_close(void *pv); -int ssc_wma_read(void *pv, char *buffer, int len); -char *ssc_wma_error(void *pv); - -/* Globals */ -PLUGIN_TRANSCODE_FN _ptfn = { - ssc_wma_init, - ssc_wma_deinit, - ssc_wma_open, - ssc_wma_close, - ssc_wma_read, - ssc_wma_error -}; - -PLUGIN_INFO _pi = { - PLUGIN_VERSION, /* version */ - PLUGIN_TRANSCODE, /* type */ - "ssc-wma/" VERSION, /* server */ - NULL, /* output fns */ - NULL, /* event fns */ - &_ptfn, /* fns */ - NULL, /* rend info */ - "wma,wmal,wmap,wmav" /* codeclist */ -}; - -/** - * return the string representation of the last error - */ -char *ssc_wma_error(void *pv) { - SSCHANDLE *handle = (SSCHANDLE*)pv; - - return _ssc_wma_errors[handle->errnum]; -} - -PLUGIN_INFO *plugin_info(void) { - return &_pi; -} - -void *ssc_wma_init(void) { - SSCHANDLE *handle; - HRESULT hr; - - hr = CoInitializeEx(NULL,COINIT_MULTITHREADED); - if(FAILED(hr)) { - pi_log(E_INF,"Could not initialize COM, Error code: 0x%08X\n",hr); - return NULL; - } - - handle=(SSCHANDLE *)malloc(sizeof(SSCHANDLE)); - if(handle) { - memset(handle,0,sizeof(SSCHANDLE)); - } - - return (void*)handle; -} - -void ssc_wma_deinit(void *vp) { - SSCHANDLE *handle = (SSCHANDLE *)vp; - ssc_wma_close(handle); - - if(handle) { - free(handle); - CoUninitialize(); - } - - return; -} - -int ssc_wma_open(void *vp, MP3FILE *pmp3) { - SSCHANDLE *handle = (SSCHANDLE*)vp; - HRESULT hr = S_OK; - WCHAR fname[PATH_MAX]; - DWORD byte_count; - char *file; - char *codec; - int duration; - - file = pmp3->path; - codec = pmp3->codectype; - duration = pmp3->song_length; - - if(!handle) - return FALSE; - - handle->state = STATE_DONE; - handle->duration = duration; - handle->errnum = SSC_WMA_E_OPEN; - - hr = WMCreateSyncReader(NULL,0,&handle->pReader); - if(FAILED(hr)) { - pi_log(E_INF,"Could not create WMA reader. Error code: 0x%08X\n",hr); - handle->errnum = SSC_WMA_E_NOREADER; - return FALSE; - } - - /* convert file name to wchar */ - MultiByteToWideChar(CP_UTF8,0,file,-1,fname,sizeof(fname)/sizeof(fname[0])); - - hr = handle->pReader->Open(fname); - if(FAILED(hr)) { - pi_log(E_INF,"Could not open file. Error code: 0x%08X\n",hr); - return FALSE; - } - handle->state=STATE_OPEN; - - hr = handle->pReader->SetRange(0,0); - if(FAILED(hr)) { - pi_log(E_INF,"Could not set range. Error code: 0x%08X\n",hr); - return FALSE; - } - - hr = handle->pReader->SetReadStreamSamples(1,0); - if(FAILED(hr)) { - pi_log(E_INF,"Could not stream samples. Error code: 0x%08X\n",hr); - return FALSE; - } - - handle->channels = 2; - handle->bits_per_sample = 16; - handle->sample_rate = 44100; - - IWMOutputMediaProps *pprops; - hr = handle->pReader->GetOutputFormat(0,0,&pprops); - if(FAILED(hr)) { - pi_log(E_LOG,"Could not get output format for %s\n",file); - return TRUE; /* we'll assume 44100/16/2 */ - } - - hr = pprops->GetMediaType(NULL,&byte_count); - if(FAILED(hr)) { - pi_log(E_LOG,"Could not get media type for %s\n",file); - return TRUE; - } - - WM_MEDIA_TYPE *ptype = (WM_MEDIA_TYPE*)calloc(byte_count,1); - if(!ptype) { - pi_log(E_FATAL,"ssc_wma_open: malloc\n"); - } - - hr = pprops->GetMediaType(ptype, &byte_count); - if(FAILED(hr)) { - free(ptype); - return TRUE; - } - - /* now get sample info */ - if(ptype->formattype == WMFORMAT_WaveFormatEx) { - WAVEFORMATEX *pformat = (WAVEFORMATEX*)ptype->pbFormat; - handle->channels = pformat->nChannels; - handle->sample_rate = pformat->nSamplesPerSec; - handle->bits_per_sample = pformat->wBitsPerSample; - } - - free(ptype); - - return TRUE; -} - -int ssc_wma_close(void *vp) { - SSCHANDLE *handle = (SSCHANDLE *)vp; - - if(!handle) - return TRUE; - - if(handle->state >= STATE_OPEN) { - handle->pReader->Close(); - } - - if(handle->pReader) - handle->pReader->Release(); - handle->pReader = NULL; - - handle->state = STATE_DONE; - return TRUE; -} - - - -int ssc_wma_read(void *vp, char *buffer, int len) { - SSCHANDLE *handle = (SSCHANDLE *)vp; - int bytes_returned = 0; - int bytes_to_copy; - HRESULT hr; - - unsigned int channels, sample_rate, bits_per_sample; - unsigned int byte_rate, block_align, duration; - - QWORD sample_time=0, sample_duration=0; - DWORD sample_len=0, flags=0, output_number=0; - - /* if we have not yet sent the header, let's do that first */ - if(handle->wav_offset != sizeof(handle->wav_header)) { - /* still have some to send */ - if(!handle->wav_offset) { - /* Should pull this from format info in the wma file */ - channels = handle->channels; - sample_rate = handle->sample_rate; - bits_per_sample = handle->bits_per_sample; - - if(handle->duration) - duration = handle->duration; - - sample_len = ((bits_per_sample * sample_rate * channels / 8) * (duration/1000)); - byte_rate = sample_rate * channels * bits_per_sample / 8; - block_align = channels * bits_per_sample / 8; - - pi_log(E_DBG,"Channels.......: %d\n",channels); - pi_log(E_DBG,"Sample rate....: %d\n",sample_rate); - pi_log(E_DBG,"Bits/Sample....: %d\n",bits_per_sample); - - memcpy(&handle->wav_header[0],"RIFF",4); - *((unsigned int*)(&handle->wav_header[4])) = 36 + sample_len; - memcpy(&handle->wav_header[8],"WAVE",4); - memcpy(&handle->wav_header[12],"fmt ",4); - *((unsigned int*)(&handle->wav_header[16])) = 16; - *((unsigned short*)(&handle->wav_header[20])) = 1; - *((unsigned short*)(&handle->wav_header[22])) = channels; - *((unsigned int*)(&handle->wav_header[24])) = sample_rate; - *((unsigned int*)(&handle->wav_header[28])) = byte_rate; - *((unsigned short*)(&handle->wav_header[32])) = block_align; - *((unsigned short*)(&handle->wav_header[34])) = bits_per_sample; - memcpy(&handle->wav_header[36],"data",4); - *((unsigned int*)(&handle->wav_header[40])) = sample_len; - } - - bytes_to_copy = sizeof(handle->wav_header) - handle->wav_offset; - if(len < bytes_to_copy) - bytes_to_copy = len; - - memcpy(buffer,&handle->wav_header[handle->wav_offset],bytes_to_copy); - handle->wav_offset += bytes_to_copy; - return bytes_to_copy; - } - - /* see if we have any leftover data */ - if(handle->data_len) { - bytes_returned = handle->data_len; - if(bytes_returned > len) { - bytes_returned = len; - } - - memcpy(buffer,handle->pdata + handle->offset,bytes_returned); - handle->offset += bytes_returned; - handle->data_len -= bytes_returned; - - if(!handle->data_len) { - handle->pBuffer->Release(); - handle->pBuffer = NULL; - } - - return bytes_returned; - } - - handle->offset = 0; - hr = handle->pReader->GetNextSample(1,&handle->pBuffer,&sample_time, &sample_duration, &flags, &output_number, NULL); - if(SUCCEEDED(hr)) { - hr = handle->pBuffer->GetBufferAndLength(&handle->pdata, &handle->data_len); - if(FAILED(hr)) { - pi_log(E_LOG,"Read error while transcoding file\n"); - handle->errnum = SSC_WMA_E_READ; - return -1; - } - -// pi_log(E_SPAM,"Read %d bytes\n",handle->data_len); - - bytes_returned = handle->data_len; - if(bytes_returned > len) - bytes_returned = len; - - memcpy(buffer,handle->pdata + handle->offset,bytes_returned); - handle->offset += bytes_returned; - handle->data_len -= bytes_returned; - - if(!handle->data_len) { - handle->pBuffer->Release(); - handle->pBuffer = NULL; - } - } else { - return 0; - } - - return bytes_returned; -} diff --git a/src/plugins/w32-event.c b/src/plugins/w32-event.c deleted file mode 100644 index acfcc01c..00000000 --- a/src/plugins/w32-event.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * $Id: $ - */ - -#include "compat.h" -#include "ff-plugins.h" - -/* Forwards */ -void plugin_handler(int, int, void *, int); - -#define PIPE_BUFFER_SIZE 4096 - -/* Globals */ -PLUGIN_EVENT_FN _pefn = { plugin_handler }; - -PLUGIN_INFO _pi = { - PLUGIN_VERSION, /* version */ - PLUGIN_EVENT, /* type */ - "w32-event/" VERSION, /* server */ - NULL, /* output fns */ - &_pefn, /* event fns */ - NULL, /* transocde fns */ - NULL, /* rend info */ - NULL /* codec list */ -}; - -typedef struct tag_plugin_msg { - int size; - int event_id; - int intval; - char vp[1]; -} PLUGIN_MSG; - - -PLUGIN_INFO *plugin_info(void) { - return &_pi; -} - -#define MAILSLOT_NAME "\\\\.\\mailslot\\FireflyMediaServer--67A72768-4154-417e-BFA0-FA9B50C342DE" -/** NO LOG IN HERE! We'll go into an endless loop. :) */ -void plugin_handler(int event_id, int intval, void *vp, int len) { - HANDLE h = CreateFile(MAILSLOT_NAME, GENERIC_WRITE, - FILE_SHARE_READ, NULL, OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, NULL); - if (h != INVALID_HANDLE_VALUE) { - DWORD bytes_written; - const int packet_size = 12 + len; - unsigned char *buffer = (unsigned char *)malloc(packet_size); - if(!buffer) - return; - memset(buffer, 0, packet_size); - - buffer[0] = packet_size & 0xff; - buffer[1] = (packet_size >> 8) & 0xff; - buffer[2] = (packet_size >> 16) & 0xff; - buffer[3] = (packet_size >> 24) & 0xff; - - buffer[4] = event_id & 0xff; - buffer[5] = (event_id >> 8) & 0xff; - buffer[6] = (event_id >> 16) & 0xff; - buffer[7] = (event_id >> 24) & 0xff; - - buffer[8] = intval & 0xff; - buffer[9] = (intval >> 8) & 0xff; - buffer[10] = (intval >> 16) & 0xff; - buffer[11] = (intval >> 24) & 0xff; - - memcpy(buffer + 12, vp, len); - - /* If this fails then there's nothing we can do about it anyway. */ - WriteFile(h, buffer, packet_size, &bytes_written, NULL); - CloseHandle(h); - } -} diff --git a/src/rend-win32.c b/src/rend-win32.c deleted file mode 100644 index 2570ffbc..00000000 --- a/src/rend-win32.c +++ /dev/null @@ -1,234 +0,0 @@ -/* - * $Id$ - * - * This is an implementation of rendezvous using the Bonjour (tm) - * for windows dns_sd.h implementation - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "daapd.h" -#include "dns_sd.h" -#include "err.h" - -/* Globals */ -pthread_t rend_tid; -static volatile int rend_stop_flag = 0; -//static volatile int rend_timeout = 100000000; /* select timeout */ -static volatile int rend_timeout=2; -static volatile int rend_count=0; -static pthread_mutex_t rend_mutex=PTHREAD_MUTEX_INITIALIZER; -typedef struct tag_rend_entry { - DNSServiceRef client; - struct tag_rend_entry *next; -} REND_ENTRY; -static REND_ENTRY rend_clients = { NULL, NULL }; - -/* Forwards */ -void *rend_mainthread(void *arg); -void DNSSD_API rend_reg_reply(DNSServiceRef client, const DNSServiceFlags flags, - DNSServiceErrorType errorCode, const char *name, - const char *regtype, const char *domain, void *context); - -/* Typedefs */ -typedef union { unsigned char b[2]; unsigned short NotAnInteger; } Opaque16; - - -/** - * initialize the rendezvous interface. - * - * @param user user to drop privs to (ignored) - * @returns 0 on success, -1 with errno set otherwise - */ -int rend_init(char *user) { - /* we'll throw off a handler thread when we register a name */ - return 0; -} - -/* FIXME */ -void rend_lock(void) { - if(pthread_mutex_lock(&rend_mutex)) - DPRINTF(E_FATAL,L_MISC,"Could not lock mutex\n"); -} - -void rend_unlock(void) { - pthread_mutex_unlock(&rend_mutex); -} - -/** - * main bonjourvous thread - * - * @param arg unused - */ -void *rend_mainthread(void *arg) { - /* this is pretty much right out of the old mdns stuff */ - int nfds; - fd_set readfds; - fd_set *which; - - struct timeval tv; - int result; - REND_ENTRY *current; - DNSServiceErrorType err = kDNSServiceErr_NoError; - - while (!rend_stop_flag) { - FD_ZERO(&readfds); - - rend_lock(); - nfds=1; - current = rend_clients.next; - while(current) { - if(current->client) { - if(DNSServiceRefSockFD(current->client) > nfds) - nfds = DNSServiceRefSockFD(current->client) + 1; - - FD_SET(DNSServiceRefSockFD(current->client),&readfds); - } - current = current->next; - } - rend_unlock(); - - tv.tv_sec = rend_timeout; - tv.tv_usec = 0; - - result = select(nfds, &readfds, (fd_set*)NULL, (fd_set*)NULL, &tv); - if (result > 0) { - rend_lock(); - current = rend_clients.next; - err=0; - while(current) { - if(current->client) { - if((!err) && (FD_ISSET(DNSServiceRefSockFD(current->client),&readfds))) { - err = DNSServiceProcessResult(current->client); - } - } - current = current->next; - } - rend_unlock(); - - if (err) { - DPRINTF(E_LOG,L_REND,"DNSServiceProcessResult returned %d\n", err); - rend_stop_flag = 1; - } - } else if (result == 0) { - DPRINTF(E_SPAM,L_REND,"rendezvous: tick!\n"); - -// myTimerCallBack(); - } else { - DPRINTF(E_INF,L_REND,"select() returned %d errno %d %s\n", result, errno, strerror(errno)); - if (errno != EINTR) rend_stop_flag = 1; - } - } - - rend_lock(); - while(current) { - if(current->client) - DNSServiceRefDeallocate(current->client); - current = current->next; - } - rend_unlock(); - return NULL; -} - - -/** - * check to see if rendezvous is running. - * - * @returns TRUE if running, FALSE otherwise - */ -int rend_running(void) { - return TRUE; -} - -/** - * stop rendezvous if it is running. There should really be a way - * to start it, would't one think? - * - * @returns TRUE if stopped, FALSE otherwise - */ -int rend_stop(void) { - return TRUE; -} - - -/** - * register a rendezvous name - * - * @param name long name to register (mt-daapd) - * @param type type to register (_daap._tcp) - * @param port port to register (3689) - * @param iface interface to register with (ignored) - * @returns TRUE if registered, FALSE otherwise - */ -int rend_register(char *name, char *type, int port, char *iface, char *txt) { - int err; - REND_ENTRY *pnew; - uint16_t port_netorder = htons((unsigned short)port); - - pnew = (REND_ENTRY *)malloc(sizeof(REND_ENTRY)); - if(!pnew) - return -1; - - rend_lock(); - pnew->client = NULL; - pnew->next = rend_clients.next; - rend_clients.next = pnew; - rend_unlock(); - - DPRINTF(E_INF,L_REND,"Registering %s as type (%s) on port %d\n", - name, type, port); - - DNSServiceRegister(&pnew->client,0,kDNSServiceInterfaceIndexAny,name,type,"local",NULL, - port_netorder,(uint16_t)strlen(txt),txt,rend_reg_reply, NULL); - - /* throw off a new thread work this */ - if(!rend_count) { - if((err=pthread_create(&rend_tid,NULL,rend_mainthread,NULL))) { - DPRINTF(E_LOG,L_REND,"Could not spawn thread: %s\n",strerror(err)); - errno=err; - return -1; - } - } - - rend_count++; - return 0; -} - -void DNSSD_API rend_reg_reply(DNSServiceRef client, const DNSServiceFlags flags, - DNSServiceErrorType errorCode, const char *name, - const char *regtype, const char *domain, void *context) -{ - DPRINTF(E_INF,L_REND,"Got a reply for %s.%s%s\n", name, regtype, domain); - switch (errorCode) { - case kDNSServiceErr_NoError: - DPRINTF(E_INF,L_REND,"Name now registered and active\n"); - break; - case kDNSServiceErr_NameConflict: - DPRINTF(E_FATAL,L_REND,"Rendezvous name in use, aborting...\n"); - break; - default: - DPRINTF(E_FATAL,L_REND,"Error %d\n", errorCode); - return; - } -} - -/** - * unregister a name - * - * unimplemented - */ -int rend_unregister(char *name, char *type, int port) { - return -1; -} diff --git a/src/w32-eventlog.c b/src/w32-eventlog.c deleted file mode 100644 index 695c2352..00000000 --- a/src/w32-eventlog.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * $Id$ - * - * eventlog messages utility functions - * - * Copyright (C) 2005-2006 Ron Pedde (ron@pedde.com) - * - * 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 - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include - -#include "daapd.h" -#include "messages.h" - -static HANDLE elog_handle = NULL; - -/** - * register eventlog functions - * - * @returns TRUE if successful, FALSE otherwise - */ -int elog_register(void) { - HKEY reg_key = NULL; - DWORD err = 0; - char path[PATH_MAX]; - DWORD event_types; - - wsprintf(path,"SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\%s", PACKAGE); - if((err=RegCreateKey(HKEY_LOCAL_MACHINE, path, ®_key)) != ERROR_SUCCESS) - return FALSE; - - GetModuleFileName(NULL, path, PATH_MAX); - - err=RegSetValueEx(reg_key, "EventMessageFile",0,REG_EXPAND_SZ,path,(DWORD)strlen(path) + 1); - if(err != ERROR_SUCCESS) { - RegCloseKey(reg_key); - return FALSE; - } - - event_types = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE; - err=RegSetValueEx(reg_key,"TypesSupported", 0, REG_DWORD, (BYTE*)&event_types, sizeof event_types ); - if(err != ERROR_SUCCESS) { - RegCloseKey(reg_key); - return FALSE; - } - - RegCloseKey(reg_key); - - return TRUE; -} - -/** - * FIXME: ENOTIMPL - */ -int elog_unregister(void) { - return TRUE; -} - -/** - * initialize the eventlog - * - * @returns TRUE if successful, FALSE otherwise - */ -int elog_init(void) { - elog_handle=RegisterEventSource(NULL, PACKAGE); - if(elog_handle == INVALID_HANDLE_VALUE) - return FALSE; - - return TRUE; -} - - -/** - * uninitialize the eventlog - * - * @returns TRUE - */ -int elog_deinit(void) { - DeregisterEventSource(elog_handle); - return TRUE; -} - -/** - * log a message to the event viewer - * - * @param level event level to log: 0=fatal, 3=warn, > info - * @returns TRUE on success, FALSE otherwise - */ - -int elog_message(int level, char *msg) { - WORD message_level = EVENTLOG_INFORMATION_TYPE; - int ret; - - if(level == 0) - message_level = EVENTLOG_ERROR_TYPE; - - ret = ReportEvent( - elog_handle, - message_level, - 0, - EVENT_MSG, - NULL, - 1, - 0, - &msg, - NULL); - - /* ReportEvent returns non-zero on success */ - return ret ? TRUE : FALSE; -} diff --git a/src/w32-eventlog.h b/src/w32-eventlog.h deleted file mode 100644 index fba2a1a1..00000000 --- a/src/w32-eventlog.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * $Id$ - * - * eventlog messages utility functions - * - * Copyright (C) 2005 Ron Pedde (ron.pedde@firstmarkcu.org) - * - * 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 - */ - -#ifndef _EVENTLOG_H_ -#define _EVENTLOG_H_ - -extern int elog_register(void); -extern int elog_unregister(void); -extern int elog_init(void); -extern int elog_deinit(void); -extern int elog_message(int level, char *msg); - -#endif /* _EVENTLOG_H_ */ diff --git a/src/w32-service.c b/src/w32-service.c deleted file mode 100644 index 6af55eab..00000000 --- a/src/w32-service.c +++ /dev/null @@ -1,292 +0,0 @@ -/* - * $Id$ - * - * simple service management functions - * - * Copyright (C) 2005 Ron Pedde (ron.pedde@firstmarkcu.org) - * - * 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 - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "daapd.h" -#include "err.h" - -/* Forwards */ -BOOL service_update_status (DWORD,DWORD,DWORD,DWORD,DWORD); -void service_mainfunc(DWORD, LPTSTR *); -void service_init(void); -void service_handler(DWORD); - -/* Globals */ -SERVICE_STATUS_HANDLE service_status_handle = NULL; -HANDLE service_kill_event = NULL; -DWORD service_current_status; - -/** - * handle the stop, start, pause requests, etc. - * - * @param code action the SCM wants us to take - */ -void service_handler(DWORD code) { - switch(code) { - case SERVICE_CONTROL_INTERROGATE: - break; - - case SERVICE_CONTROL_SHUTDOWN: - // fallthrough - - case SERVICE_CONTROL_STOP: - service_update_status(SERVICE_STOP_PENDING, NO_ERROR, 0, 1, 5000); - SetEvent(service_kill_event); - return; - - default: - break; - } - service_update_status(service_current_status, NO_ERROR, 0, 0, 0); -} - -/** - * exit the service as gracefully as possible, returning the error - * level specified. I think there are some state machine problems - * here, but probably nothing fatal -- an unnecessary call to - * xfer_shutdown, maybe. That's about it. - * - * @param errorlevel errorlevel to return - */ -void service_shutdown(int errorlevel) { - DPRINTF(E_INF,L_MISC,"Service about to terminate with error %d\n",errorlevel); - - if(service_current_status != SERVICE_STOPPED) { - service_update_status(SERVICE_STOP_PENDING, NO_ERROR, 0, 1, 5000); - - config.stop = 1; - service_update_status(SERVICE_STOPPED,errorlevel,0,0,3000); - } - - if(service_kill_event) { - SetEvent(service_kill_event); - CloseHandle(service_kill_event); - } - -// exit(errorlevel); - /* we'll let the main process exit (or hang!) */ - Sleep(5000); - exit(1); -} - -/** - * The main for the service -- starts up the service and - * makes it run. This sits in a tight loop until the service - * is shutdown. If this function exits, it's because the - * service is stopping. - * - * @param argc argc as passed from SCM - * @param argv argv as passed from SCM - */ -void service_mainfunc(DWORD argc, LPTSTR *argv) { - BOOL success; - - service_current_status = SERVICE_STOPPED; - service_status_handle = RegisterServiceCtrlHandler(PACKAGE, - (LPHANDLER_FUNCTION) service_handler); - - if(!service_status_handle) { - service_shutdown(GetLastError()); - return; - } - - // Next Notify the Service Control Manager of progress - success = service_update_status(SERVICE_START_PENDING, NO_ERROR, 0, 1, 5000); - if (!success) { - service_shutdown(GetLastError()); - return; - } - - service_kill_event = CreateEvent (0, TRUE, FALSE, 0); - if(!service_kill_event) { - service_shutdown(GetLastError()); - return; - } - - // FIXME - // startup errors generate an ERR_FATAL, which exit()s in the - // logging code -- fine for console apps, not so good here. - // Generates ugly error messages from the service tool. - // (terminated unexpectedly). -// xfer_startup(); - - // The service is now running. Notify the SCM of this fact. - service_current_status = SERVICE_RUNNING; - success = service_update_status(SERVICE_RUNNING, NO_ERROR, 0, 0, 0); - if (!success) { - service_shutdown(GetLastError()); - return; - } - - // Now just wait for our killed service signal, and then exit, which - // terminates the service! - WaitForSingleObject (service_kill_event, INFINITE); - service_shutdown(0); -} - - -/** - * update the scm service status, so it can make pretty - * gui stupidness. light wrapper around SetServiceStatus - * - * If the visual studio editor wasn't so horribly useless - * and munge up the indents, I'd split these parameters - * into several lines, but Microsoft apparently can't build - * an editor that is as good as that made by volunteers. - * - * Those who do not understand Unix are condemned to reinvent - * it, poorly. -- Henry Spencer - * - * @param dwCurrentState new service state - * @param dwWin32ExitCode exit code if state is SERVICE_STOPPED - * @param dwServiceSpecificExitCode specified service exit code - * @param dwCheckPoint incremented value for long startups - * @param dwWaitHint how to before giving up on the service - * - * @returns result of SetServiceStatus - true on success - */ -BOOL service_update_status (DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwServiceSpecificExitCode, DWORD dwCheckPoint, DWORD dwWaitHint) { - BOOL success; - SERVICE_STATUS serviceStatus; - - service_current_status = dwCurrentState; - - serviceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; - serviceStatus.dwCurrentState = dwCurrentState; - if (dwCurrentState == SERVICE_START_PENDING) { - serviceStatus.dwControlsAccepted = 0; - } else { - serviceStatus.dwControlsAccepted = - SERVICE_ACCEPT_STOP | - SERVICE_ACCEPT_SHUTDOWN; - } - - if (dwServiceSpecificExitCode == 0) { - serviceStatus.dwWin32ExitCode = dwWin32ExitCode; - } else { - serviceStatus.dwWin32ExitCode = ERROR_SERVICE_SPECIFIC_ERROR; - } - - serviceStatus.dwServiceSpecificExitCode = dwServiceSpecificExitCode; - serviceStatus.dwCheckPoint = dwCheckPoint; - serviceStatus.dwWaitHint = dwWaitHint; - - success = SetServiceStatus (service_status_handle, &serviceStatus); - if (!success) { - SetEvent(service_kill_event); - } - return success; -} - -/** - * kick off the application when in service mdoe - suitable for threadprocing - */ -void *service_startup(void *arg) { - SERVICE_TABLE_ENTRY serviceTable[] = { - { PACKAGE, (LPSERVICE_MAIN_FUNCTION) service_mainfunc }, - { NULL, NULL } - }; - - BOOL success; - - // Register the service with the Service Control Manager - // If it were to fail, what would we do, anyway? - success = StartServiceCtrlDispatcher(serviceTable); - return NULL; -} - -/** - * install the service - */ -void service_register(void) { - SC_HANDLE scm; - SC_HANDLE svc; - char path[PATH_MAX]; - - GetModuleFileName(NULL, path, PATH_MAX ); - - if(!(scm = OpenSCManager(0,0,SC_MANAGER_CREATE_SERVICE))) { - DPRINTF(E_FATAL,L_MISC,"Cannot open service control manager\n"); - } - - svc = CreateService(scm,PACKAGE,SERVICENAME,SERVICE_ALL_ACCESS, - SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE_ERROR_NORMAL, - path,0,0,0,0,0); - if(!svc) { - DPRINTF(E_FATAL,L_MISC,"Cannot create service: %d\n",GetLastError()); - } - - CloseServiceHandle(svc); - CloseServiceHandle(scm); - - DPRINTF(E_LOG,L_MISC,"Registered service successfully\n"); -} - - -/** - * uninstall the service - */ -void service_unregister(void) { - SC_HANDLE scm; - SC_HANDLE svc; - BOOL res; - SERVICE_STATUS status; - - if(!(scm = OpenSCManager(0,0,SC_MANAGER_CREATE_SERVICE))) { - DPRINTF(E_FATAL,L_MISC,"Cannot open service control manager: %d\n",GetLastError()); - } - - svc = OpenService(scm,PACKAGE,SERVICE_ALL_ACCESS | DELETE); - if(!svc) { - DPRINTF(E_FATAL,L_MISC,"Cannot open service: %d (is it installed??)\n",GetLastError()); - } - - res=QueryServiceStatus(svc,&status); - if(!res) { - DPRINTF(E_FATAL,L_MISC,"Cannot query service status: %d\n",GetLastError()); - } - - if(status.dwCurrentState != SERVICE_STOPPED) { - DPRINTF(E_LOG,L_MISC,"Stopping service...\n"); - ControlService(svc,SERVICE_CONTROL_STOP,&status); - // we should probably poll for service stoppage... - Sleep(2000); - } - - DPRINTF(E_LOG,L_MISC,"Deleting service...\n"); - res = DeleteService(svc); - - if(res) { - DPRINTF(E_LOG,L_MISC,"Deleted successfully\n"); - } else { - DPRINTF(E_FATAL,L_MISC,"Error deleting service: %d\n",GetLastError()); - } - - CloseServiceHandle(svc); - CloseServiceHandle(scm); -} - diff --git a/src/w32-service.h b/src/w32-service.h deleted file mode 100644 index f69c8c64..00000000 --- a/src/w32-service.h +++ /dev/null @@ -1,32 +0,0 @@ - -/* - * $Id$ - * - * simple service management functions - * - * Copyright (C) 2005 Ron Pedde (ron.pedde@firstmarkcu.org) - * - * 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 - */ - -#ifndef _SERVICE_H_ -#define _SERVICE_H_ - -extern void *service_startup(void *); -extern void service_shutdown(int); -extern void service_register(void); -extern void service_unregister(void); - -#endif /* _SERVICE_H_ */ diff --git a/src/win32.h b/src/win32.h deleted file mode 100644 index 824d4989..00000000 --- a/src/win32.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * $Id$ - * - * Win32 compatibility stuff - */ - -#ifndef _WIN32_H_ -#define _WIN32_H_ - -// Visual C++ 2005 has a secure CRT that generates oodles of warnings when unbounded -// C library functions are used. Disable this feature for the time being. -#if defined(_MSC_VER) -# if _MSC_VER >= 1400 -# define _CRT_SECURE_NO_DEPRECATE 1 -# define _CRT_NONSTDC_NO_DEPRECATE 1 -# endif -#endif - -// Don't pull in winsock... -#define WIN32_LEAN_AND_MEAN - -// Must include all these before defining the non-underscore versions -// otherwise the prototypes will go awry. -#include -//#include -#include -#include -#include -#include - -/* Type fixups */ -#define mode_t int -#define ssize_t int -//#define socklen_t int - -/* Consts */ -#define PIPE_BUF 256 /* What *should* this be on win32? */ -#define MAXDESC 512 /* http://msdn.microsoft.com/en-us/library/kdfaxaay.aspx */ -#define ETIME 101 -#define PATH_MAX 2048 /* it's clearly not _MAX_PATH... other projects seem to use 512 */ -#define MAX_NAME_LEN _MAX_PATH -#define EADDRINUSE WSAEADDRINUSE -#define S_IFLNK 0x1 - -#define HOST "unknown-windows-ick" -#define SERVICENAME "Firefly Media Server" - -#include "os-win32.h" - -#ifndef TRUE -# define TRUE 1 -# define FALSE 0 -#endif - -typedef UINT8 uint8_t; -typedef INT8 int8_t; -typedef UINT16 uint16_t; -typedef INT16 int16_t; -typedef UINT32 uint32_t; -typedef INT32 int32_t; -typedef UINT64 uint64_t; -typedef INT64 int64_t; - - -/* Funtion fixups */ -#define usleep Sleep -#define sleep(a) Sleep((a) * 1000) -#define mkdir(a,b) _mkdir((a)) -#define strtoll strtol /* FIXME: compat functions */ -#define atoll atol - -#define realpath os_realpath -#define strsep os_strsep - -#define strncasecmp strnicmp -#define strcasecmp stricmp -#define snprintf _snprintf -#define vsnprintf _vsnprintf -#define access _access - -#define readdir_r os_readdir_r -#define closedir os_closedir -#define opendir os_opendir - -#define getuid os_getuid -#define strerror os_strerror /* FIXME: get rid of posix errors */ - -/* override the uici stuff */ -// #define u_open os_opensocket -// #define u_accept os_acceptsocket - -/* privately implemented functions: @see os-win32.c */ -#define gettimeofday os_gettimeofday - - -#define CONFFILE os_configpath() - -extern char *os_configpath(void); - -#endif /* _WIN32_H_ */ - diff --git a/win32/FireflyShell/AboutPage.cpp b/win32/FireflyShell/AboutPage.cpp deleted file mode 100644 index db4c5fe1..00000000 --- a/win32/FireflyShell/AboutPage.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#include "stdafx.h" -#include "AboutPage.h" -#include "FireflyShell.h" -#include "VersionInfo.h" -#include "DosPath.h" - -LRESULT CAboutPage::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) -{ - m_firefly_link.SubclassWindow(GetDlgItem(IDC_FIREFLYLINK)); - m_firefly_link.SetHyperLink(_T("http://forums.fireflymediaserver.org")); - - m_roku_link.SetHyperLink(_T("http://www.rokulabs.com")); - m_roku_link.SubclassWindow(GetDlgItem(IDC_ROKULINK)); - - - // Do this before we try and use the controls. - DoDataExchange(false); - - FillVersionList(); - - return 0; -} - -void CAboutPage::FillVersionList() -{ - CWaitCursor wait; - - m_versions.Empty(); - - // Initialise the list control - CString str; - str.LoadString(IDS_VERSIONINFO_DESCRIPTION); - m_list.AddColumn(str, SUBITEM_DESCRIPTION); - str.LoadString(IDS_VERSIONINFO_VERSION); - m_list.AddColumn(str, SUBITEM_VERSION, 1); - str.LoadString(IDS_VERSIONINFO_PATH); - m_list.AddColumn(str, SUBITEM_PATH, 2); - - m_list.SetColumnWidth(SUBITEM_DESCRIPTION, 40); - m_list.SetColumnWidth(SUBITEM_VERSION, 40); - - CDosPath server_path(GetApplication()->GetServiceBinaryPath()); - AddEntry(server_path.GetPath(), _T("Firefly server")); - AddEntry(CDosPath::AppPath().GetPath(), _T("FireflyShell")); - - CString plugins_path = server_path.GetPathOnly() + _T("plugins\\"); - CString plugins_pattern = plugins_path + _T("*.dll"); - WIN32_FIND_DATA find; - HANDLE hFind = FindFirstFile(plugins_pattern, &find); - if (hFind != INVALID_HANDLE_VALUE) - { - do - { - AddEntry(plugins_path + find.cFileName, CString(find.cFileName) + _T(" plugin")); - } while (FindNextFile(hFind, &find)); - FindClose(hFind); - } - - for(int i = 0; i < SUBITEM_COUNT; ++i) - { - m_list.SetColumnWidth(i, m_column_widths[i] + 16); - } -} - -void CAboutPage::AddEntry(const TCHAR *path, const TCHAR *fallback_description) -{ - VersionInfo vi; - - CString description = fallback_description; - CString version; - - if (vi.Open(path)) - { - description = vi.GetFileDescription(); - version = vi.GetFileVersion(); - } - - int item = m_list.GetItemCount(); - AddItem(item, SUBITEM_DESCRIPTION, description); - AddItem(item, SUBITEM_VERSION, version); - AddItem(item, SUBITEM_PATH, path); - - CString line; - line.Format(_T("%s\t%s\t%s\r\n"), description, version, path); - m_versions += line; -} - -void CAboutPage::AddItem(int item, int subitem, const TCHAR *text) -{ - m_list.AddItem(item, subitem, text); - const int width = m_list.GetStringWidth(text); - if (width > m_column_widths[subitem]) - m_column_widths[subitem] = width; -} - -LRESULT CAboutPage::OnCopy(WORD, WORD, HWND, BOOL &) -{ - if (OpenClipboard()) - { - const size_t len = m_versions.GetLength() * sizeof(TCHAR); - - HGLOBAL h = ::GlobalAlloc(GMEM_MOVEABLE, len); - if (h) - { - void *buffer = ::GlobalLock(h); - memcpy(buffer, static_cast(m_versions), len); - ::GlobalUnlock(h); - - EmptyClipboard(); -#if defined(UNICODE) - SetClipboardData(CF_UNICODETEXT, h); -#else - SetClipboardData(CF_TEXT, h); -#endif - } - CloseClipboard(); - } - return 0; -} - -LRESULT CAboutPage::OnCtlColorStatic(HDC hdc, HWND hwnd) -{ - if (GetDlgItem(IDC_LOGO) == hwnd) - { - HBRUSH brush = (HBRUSH)::GetStockObject(WHITE_BRUSH); - return (LRESULT)brush; - } - else - return 0; -} \ No newline at end of file diff --git a/win32/FireflyShell/AboutPage.h b/win32/FireflyShell/AboutPage.h deleted file mode 100644 index 8bb7f6ca..00000000 --- a/win32/FireflyShell/AboutPage.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#ifndef ABOUTPAGE_H -#define ABOUTPAGE_H 1 - -#include "resource.h" - -class CAboutPage : - public CPropertyPageImpl, - public CWinDataExchange -{ - typedef CPropertyPageImpl base; - CListViewCtrl m_list; - enum - { - SUBITEM_DESCRIPTION = 0, - SUBITEM_VERSION = 1, - SUBITEM_PATH = 2, - SUBITEM_COUNT = 3 - }; - - int m_column_widths[SUBITEM_COUNT]; - - CHyperLink m_roku_link; - CHyperLink m_firefly_link; - - // String version of information ready to write to the clipboard - CString m_versions; - -public: - CAboutPage() - { - ::ZeroMemory(m_column_widths, sizeof(m_column_widths)); - } - enum { IDD = IDD_PAGE_ABOUT }; - -private: - - // Message Handlers - BEGIN_MSG_MAP(CAboutPage) - MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) - COMMAND_ID_HANDLER(IDC_COPY, OnCopy) - MSG_WM_CTLCOLORSTATIC(OnCtlColorStatic) - CHAIN_MSG_MAP(base) - END_MSG_MAP() - - BEGIN_DDX_MAP(CAboutPage) - DDX_CONTROL_HANDLE(IDC_VERSIONLIST, m_list) - END_DDX_MAP() - - LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); - LRESULT OnCopy(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); - LRESULT OnCtlColorStatic(HDC, HWND); - - void FillVersionList(); - void AddEntry(const TCHAR *path, const TCHAR *fallback_description); - - void AddItem(int item, int subitem, const TCHAR *text); -}; - -#endif // ABOUTPAGE_H \ No newline at end of file diff --git a/win32/FireflyShell/AdvancedPage.cpp b/win32/FireflyShell/AdvancedPage.cpp deleted file mode 100644 index a3e0646c..00000000 --- a/win32/FireflyShell/AdvancedPage.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/* -*(C) 2006 Roku LLC -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License Version 2 as published -* by the Free Software Foundation. -* -* 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. -* -* Please read README.txt in the same directory as this source file for -* further license information. -*/ - -#include "stdafx.h" -#include "AdvancedPage.h" -#include "IniFile.h" -#include "FireflyShell.h" - -LRESULT CAdvancedPage::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) -{ - CWaitCursor wait; - - IniFile ini(GetApplication()->GetConfigPath()); - m_server_port = ini.GetInteger(_T("general"), _T("port"), 9999); - - DoDataExchange(false); - m_port_spin.SetRange32(1, 65535); - - if(GetApplication()->IsServiceAutoStartEnabled()) - m_autostart_check.SetCheck(BST_CHECKED); - else - m_autostart_check.SetCheck(BST_UNCHECKED); - - if(GetApplication()->IsAppletAutoStartEnabled()) - m_autostart_icon_check.SetCheck(BST_CHECKED); - else - m_autostart_icon_check.SetCheck(BST_UNCHECKED); - - UpdateControls(); - - GetDlgItem(IDC_STARTSERVICE).SendMessage(BCM_SETSHIELD,0,TRUE); - GetDlgItem(IDC_STOPSERVICE).SendMessage(BCM_SETSHIELD,0,TRUE); - GetDlgItem(IDC_AUTOSTART).SendMessage(BCM_SETSHIELD,0,TRUE); - - GetApplication()->ServiceStatusSubscribe(this); - return 0; -} - -void CAdvancedPage::OnDestroy() { - GetApplication()->ServiceStatusUnsubscribe(this); -} - -void CAdvancedPage::UpdateControls() { - Service::Status status = GetApplication()->GetServiceStatus(); - UpdateControls(status); -} - -void CAdvancedPage::UpdateControls(Service::Status status) -{ - UINT state_id; - if (status.IsPending()) - { - state_id = IDS_SERVER_PENDING; - GetDlgItem(IDC_STARTSERVICE).ShowWindow(SW_HIDE); - GetDlgItem(IDC_STOPSERVICE).ShowWindow(SW_HIDE); - } - else if (status.IsRunning()) - { - state_id = IDS_SERVER_RUNNING; - GetDlgItem(IDC_STARTSERVICE).ShowWindow(SW_HIDE); - GetDlgItem(IDC_STOPSERVICE).ShowWindow(SW_SHOW); - } - else - { - state_id = IDS_SERVER_STOPPED; - GetDlgItem(IDC_STARTSERVICE).ShowWindow(SW_SHOW); - GetDlgItem(IDC_STOPSERVICE).ShowWindow(SW_HIDE); - } - - const bool can_configure = GetApplication()->CanConfigure(); - GetDlgItem(IDC_SERVERPORT).EnableWindow(can_configure); - GetDlgItem(IDC_PORTSPIN).EnableWindow(can_configure); - - // If we can't control the service then don't give the user - // the impression that we can. - const bool can_control = GetApplication()->CanControlService(); - GetDlgItem(IDC_STARTSERVICE).EnableWindow(can_control); - GetDlgItem(IDC_STOPSERVICE).EnableWindow(can_control); - GetDlgItem(IDC_AUTOSTART).EnableWindow(can_control); - - CString state; - state.LoadString(state_id); - if (!can_control) - { - CString s; - s.LoadString(IDS_NOT_ADMIN); - state += " "; - state += s; - } - - GetDlgItem(IDC_SERVERSTATE).SetWindowText(state); -} - -int CAdvancedPage::OnApply() -{ - CWaitCursor wait; - - ATLTRACE("CAdvancedPage::OnApply\n"); - - if (!DoDataExchange(true)) - return false; - - IniFile ini(GetApplication()->GetConfigPath()); - ini.SetInteger(_T("general"), _T("port"), m_server_port); - - GetApplication()->EnableServiceAutoStart(m_hWnd,m_autostart_check.GetCheck() == BST_CHECKED); - GetApplication()->EnableAppletAutoStart(m_hWnd,m_autostart_icon_check.GetCheck() == BST_CHECKED); - - // Incorrectly documented in WTL - return true; -} - -LRESULT CAdvancedPage::OnStartService(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) -{ - GetApplication()->StartService(m_hWnd); - UpdateControls(); - return 0; -} - -LRESULT CAdvancedPage::OnStopService(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) -{ - GetApplication()->StopService(m_hWnd); - UpdateControls(); - return 0; -} - -LRESULT CAdvancedPage::OnWebAdmin(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) -{ - CWaitCursor wait; - - // Go to the config file because we might not have committed a change yet. - IniFile ini(GetApplication()->GetConfigPath()); - unsigned int port = ini.GetInteger(_T("general"), _T("port"), 9999); - - CString url; - url.Format(_T("http://localhost:%u/"), port); - - ::ShellExecute(m_hWnd, _T("open"), url, NULL, NULL, SW_SHOWNORMAL); - return 0; -} - -void CAdvancedPage::OnServiceStatus(Service::Status old_status, Service::Status new_status) -{ - UpdateControls(new_status); -} - diff --git a/win32/FireflyShell/AdvancedPage.h b/win32/FireflyShell/AdvancedPage.h deleted file mode 100644 index 0b9b0c14..00000000 --- a/win32/FireflyShell/AdvancedPage.h +++ /dev/null @@ -1,87 +0,0 @@ -/* -*(C) 2006 Roku LLC -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License Version 2 as published -* by the Free Software Foundation. -* -* 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. -* -* Please read README.txt in the same directory as this source file for -* further license information. -*/ - -#ifndef ADVANCEDPAGE_H -#define ADVANCEDPAGE_H 1 - -#include "resource.h" -#include "ServiceControl.h" - -/// @todo Users shouldn't be able to paste non-numbers into the port number. - -class CAdvancedPage : - public CPropertyPageImpl, - public CWinDataExchange, - public ServiceStatusObserver -{ -public: - enum { IDD = IDD_PAGE_ADVANCED }; - -private: - typedef CPropertyPageImpl base; - - enum ServiceState - { - Pending = 0, - Running = 1, - Stopped = 2 - }; - - enum { TIMER_ID = 42 }; - - unsigned int m_server_port; - CUpDownCtrl m_port_spin; - CButton m_autostart_check; - CButton m_autostart_icon_check; - - void UpdateControls(Service::Status status); - void UpdateControls(); - - // ServiceStatusObserver - void OnServiceStatus(Service::Status old_status, Service::Status new_status); - - BEGIN_MSG_MAP(CAdvancedPage) - MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) - COMMAND_HANDLER_EX(IDC_SERVERPORT, EN_CHANGE, OnChange) - COMMAND_ID_HANDLER(IDC_STARTSERVICE, OnStartService) - COMMAND_ID_HANDLER(IDC_STOPSERVICE, OnStopService) - COMMAND_ID_HANDLER(IDC_WEBADMIN, OnWebAdmin) - MSG_WM_DESTROY(OnDestroy) - CHAIN_MSG_MAP(base) - END_MSG_MAP() - - BEGIN_DDX_MAP(CAdvancedPage) - DDX_UINT(IDC_SERVERPORT, m_server_port); - DDX_CONTROL_HANDLE(IDC_PORTSPIN, m_port_spin); - DDX_CONTROL_HANDLE(IDC_AUTOSTART, m_autostart_check); - DDX_CONTROL_HANDLE(IDC_AUTOSTART_ICON, m_autostart_icon_check); - END_DDX_MAP() - - // MessageHandlers; - LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); - LRESULT OnStartService(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); - LRESULT OnStopService(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); - LRESULT OnWebAdmin(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); - void OnDestroy(); - void OnTimer(UINT id, TIMERPROC proc); - int OnApply(); - void OnChange(UINT uCode, int nCtrlID, HWND hwndCtrl) { - // Lots of things could have changed. - SetModified(); - } -}; - -#endif // ADVANCEDPAGE_H \ No newline at end of file diff --git a/win32/FireflyShell/ConfigPage.cpp b/win32/FireflyShell/ConfigPage.cpp deleted file mode 100644 index ec264c37..00000000 --- a/win32/FireflyShell/ConfigPage.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#include "stdafx.h" -#include "ConfigPage.h" -#include "FireflyShell.h" -#include "IniFile.h" - -LRESULT CConfigPage::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) -{ - CWaitCursor wait; - - IniFile ini(GetApplication()->GetConfigPath()); - - m_server_name = ini.GetString(_T("general"), _T("servername"), _T("Firefly media server")); - m_media_path = ini.GetString(_T("general"), _T("mp3_dir"), _T("C:\\Music")); - m_password = ini.GetString(_T("general"), _T("password"), _T("")); - - // Do this before we try and use the controls. - DoDataExchange(false); - - const bool enable_password = !m_password.IsEmpty(); - m_protect_checkbox.SetCheck(enable_password); - EnableControls(); - return 0; -} - -void CConfigPage::EnableControls() -{ - const bool enable = GetApplication()->CanConfigure(); - GetDlgItem(IDC_SERVERNAME).EnableWindow(enable); - GetDlgItem(IDC_PATH).EnableWindow(enable); - GetDlgItem(IDC_PROTECT).EnableWindow(enable); - GetDlgItem(IDC_BROWSE).EnableWindow(enable); - - const bool enable_password = (m_protect_checkbox.GetCheck() != 0) && enable; - GetDlgItem(IDC_PASSWORD).EnableWindow(enable_password); - //GetDlgItem(IDC_PASSWORD_PROMPT).EnableWindow(enable_password); -} - -int CConfigPage::OnApply() -{ - CWaitCursor wait; - - ATLTRACE("CConfigPage::OnApply\n"); - if (!DoDataExchange(true)) - return false; - - IniFile ini(GetApplication()->GetConfigPath()); - ini.SetString(_T("general"), _T("servername"), m_server_name); - ini.SetString(_T("general"), _T("mp3_dir"), m_media_path); - ini.SetString(_T("general"), _T("password"), m_password); - - // Incorrectly documented in WTL - return true; -} - -LRESULT CConfigPage::OnBrowse(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) -{ - CFolderDialog folder; - - // Who cares if it fails. - DoDataExchange(true); - - folder.SetInitialFolder(m_media_path); - - if (folder.DoModal() == IDOK) - { - m_media_path = folder.GetFolderPath(); - DoDataExchange(false); - } - - return 0; -} - -void CConfigPage::OnClickProtect(UINT uCode, int nCtrlID, HWND hwndCtrl) -{ - EnableControls(); - SetModified(); -} \ No newline at end of file diff --git a/win32/FireflyShell/ConfigPage.h b/win32/FireflyShell/ConfigPage.h deleted file mode 100644 index 5a5f8640..00000000 --- a/win32/FireflyShell/ConfigPage.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#ifndef CONFIGPAGE_H -#define CONFIGPAGE_H 1 - -#include "resource.h" - -class CMainDlg; - -class CConfigPage : - public CPropertyPageImpl, - public CWinDataExchange -{ - typedef CPropertyPageImpl base; - -public: - enum { IDD = IDD_PAGE_BASIC }; - -private: - CString m_media_path; - CString m_server_name; - CString m_password; - CButton m_protect_checkbox; - - void EnableControls(); - - BEGIN_MSG_MAP(thisClass) - MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) - COMMAND_ID_HANDLER(IDC_BROWSE, OnBrowse) - COMMAND_HANDLER_EX(IDC_PROTECT, BN_CLICKED, OnClickProtect) - COMMAND_HANDLER_EX(IDC_PASSWORD, EN_CHANGE, OnChange) - COMMAND_HANDLER_EX(IDC_SERVERNAME, EN_CHANGE, OnChange) - COMMAND_HANDLER_EX(IDC_PATH, EN_CHANGE, OnChange) - CHAIN_MSG_MAP(base) - END_MSG_MAP() - - BEGIN_DDX_MAP(CConfigPage) - DDX_TEXT(IDC_PATH, m_media_path); - DDX_TEXT(IDC_SERVERNAME, m_server_name); - DDX_TEXT(IDC_PASSWORD, m_password); - DDX_CONTROL_HANDLE(IDC_PROTECT, m_protect_checkbox); - END_DDX_MAP() - - // Message handlers - LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); - LRESULT OnBrowse(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); - void OnClickProtect(UINT uCode, int nCtrlID, HWND hwndCtrl); - int OnApply(); - void OnChange(UINT uCode, int nCtrlID, HWND hwndCtrl) - { - // Lots of things could have changed. - SetModified(); - } -}; - -#endif // CONFIGPAGE_H \ No newline at end of file diff --git a/win32/FireflyShell/DosPath.cpp b/win32/FireflyShell/DosPath.cpp deleted file mode 100644 index 5eb770e6..00000000 --- a/win32/FireflyShell/DosPath.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/* - * (C) 1997, 2006 Mike Crowe - * - * License: Do what you like with it except claim that you wrote it. - */ - -#include "stdafx.h" -#include "dospath.h" -#include -#include - -CDosPath::CDosPath(const TCHAR *pszPath, int nFlags) -{ - SetPath(pszPath, nFlags); -} - -CDosPath::CDosPath(const CDosPath &old) -{ - m_drive = old.m_drive; - m_dir = old.m_dir; - m_file = old.m_file; - m_ext = old.m_ext; -} - -CDosPath &CDosPath::operator=(const CDosPath &old) -{ - m_drive = old.m_drive; - m_dir = old.m_dir; - m_file = old.m_file; - m_ext = old.m_ext; - return *this; -} - -CDosPath::~CDosPath() -{ -} - -void CDosPath::SplitPath(const TCHAR *path) -{ -#if USE_SECURE - _tsplitpath_s(path, m_drive.GetBufferSetLength(_MAX_DRIVE), _MAX_DRIVE, - m_dir.GetBufferSetLength(_MAX_DIR), _MAX_DIR, - m_file.GetBufferSetLength(_MAX_FNAME), _MAX_FNAME, - m_ext.GetBufferSetLength(_MAX_EXT), _MAX_EXT); -#else - _tsplitpath(path, m_drive.GetBufferSetLength(_MAX_DRIVE), - m_dir.GetBufferSetLength(_MAX_DIR), - m_file.GetBufferSetLength(_MAX_FNAME), - m_ext.GetBufferSetLength(_MAX_EXT)); -#endif - - m_ext.ReleaseBuffer(); - m_file.ReleaseBuffer(); - m_dir.ReleaseBuffer(); - m_drive.ReleaseBuffer(); -} - -void CDosPath::SetPath(const TCHAR *pszPath, int nFlags) -{ - if (nFlags & PATH_ONLY) - { - CString temp(pszPath); - temp += '\\'; - SplitPath(temp); - } - else - SplitPath(pszPath); -} - -CDosPath &CDosPath::operator|=(CDosPath &fullpath) -{ - if (m_drive.IsEmpty()) - { -// TRACE1("Inserting drive %s\n", fullpath.m_szDrive); - m_drive = fullpath.m_drive; - } - if (m_dir.IsEmpty()) - { -// TRACE1("Inserting directory %s\n", fullpath.m_szDir); - m_dir = fullpath.m_dir; - } - if (m_file.IsEmpty()) - { -// TRACE1("Inserting file %s\n", fullpath.m_szFile); - m_file = fullpath.m_file; - } - if (m_ext.IsEmpty()) - { -// TRACE1("Inserting extension %s\n", fullpath.m_szExt); - m_ext = fullpath.m_ext; - } - return *this; -} - -CDosPath CDosPath::operator|(CDosPath &fullpath) -{ - CDosPath temp(GetPath()); - temp |= fullpath; - return temp; -} - -CString CDosPath::GetPath() const -{ - CString temp; -#if USE_SECURE - _tmakepath_s(temp.GetBufferSetLength(_MAX_PATH), _MAX_PATH, m_drive, m_dir, m_file, m_ext); -#else - _tmakepath(temp.GetBufferSetLength(_MAX_PATH), m_drive, m_dir, m_file, m_ext); -#endif - temp.ReleaseBuffer(); - return temp; -} - -CString CDosPath::GetPathOnly() const -{ - CString temp; -#if USE_SECURE - _tmakepath_s(temp.GetBufferSetLength(_MAX_PATH), _MAX_PATH, m_drive, m_dir, NULL, NULL); -#else - _tmakepath(temp.GetBufferSetLength(_MAX_PATH), m_drive, m_dir, NULL, NULL); -#endif - temp.ReleaseBuffer(); - return temp; -} - -CDosPath CDosPath::CurrentPath() -{ - TCHAR szBuffer[_MAX_PATH]; - _tgetcwd(szBuffer, _MAX_PATH); - return CDosPath(szBuffer, PATH_ONLY); -} - -CDosPath CDosPath::AppPath() -{ - TCHAR szBuffer[_MAX_PATH]; -#ifdef _MFC - GetModuleFileName(AfxGetApp()->m_hInstance, szBuffer, _MAX_PATH); -#else - GetModuleFileName(GetModuleHandle(NULL), szBuffer, _MAX_PATH); -#endif - return CDosPath(szBuffer); -} - -CDosPath CDosPath::WindowsPath() -{ - TCHAR szBuffer[_MAX_PATH]; - GetWindowsDirectory(szBuffer, _MAX_PATH); - return CDosPath(szBuffer, PATH_ONLY); -} - -#ifdef MAKE_EXE -#include - -void main(int ac, char *av[]) -{ - if (ac != 3) - { - printf("Usage: dospath incomplete complete\n"); - return; - } - CDosPath a = av[1]; - CDosPath b = av[2]; - a |= b; - printf("%s |= %s = %s\n", av[1], av[2], (const char *) a.GetPath()); - printf("\n\n\n\n"); - a = CDosPath::CurrentPath(); - printf("Current = %s\n", (const char *)a.GetPath()); - a = CDosPath::AppPath(); - printf("App = %s\n", (const char *)a.GetPath()); - a = CDosPath::TempPath(); - printf("Temp = %s\n", (const char *)a.GetPath()); -} -#endif diff --git a/win32/FireflyShell/DosPath.h b/win32/FireflyShell/DosPath.h deleted file mode 100644 index 0704efff..00000000 --- a/win32/FireflyShell/DosPath.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * (C) 1997, 2006 Mike Crowe - * - * License: Do what you like with it except claim that you wrote it. - */ - -#ifndef DOSPATH_H -#define DOSPATH_H - -class CDosPath -{ - CString m_drive; - CString m_dir; - CString m_file; - CString m_ext; - - void SplitPath(const TCHAR *buffer); - -public: - enum { PATH_ONLY = 1 }; - - CDosPath(const TCHAR *pszPath, int nFlags = 0); - CDosPath(const CDosPath &old); - ~CDosPath(); - - CDosPath &operator|=(CDosPath &fullpath); - CDosPath operator|(CDosPath &fullpath); - - CDosPath &operator=(const CDosPath &old); - CString GetPath() const; - CString GetPathOnly() const; - void SetPath(const TCHAR *pszBuffer, int nFlags = 0); - - static CDosPath CurrentPath(); - static CDosPath AppPath(); - static CDosPath TempPath(); -#ifdef _WINDOWS - static CDosPath WindowsPath(); -#endif - - CString GetFile() - { - return m_file; - } - CString GetExt() - { - return m_ext; - } -}; - -#endif // DOSPATH_H \ No newline at end of file diff --git a/win32/FireflyShell/FireflyShell.DEU.rc b/win32/FireflyShell/FireflyShell.DEU.rc deleted file mode 100644 index dfb41f34..00000000 Binary files a/win32/FireflyShell/FireflyShell.DEU.rc and /dev/null differ diff --git a/win32/FireflyShell/FireflyShell.cpp b/win32/FireflyShell/FireflyShell.cpp deleted file mode 100644 index b2690d92..00000000 --- a/win32/FireflyShell/FireflyShell.cpp +++ /dev/null @@ -1,394 +0,0 @@ -/* -*(C) 2006 Roku LLC -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License Version 2 as published -* by the Free Software Foundation. -* -* 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. -* -* Please read README.txt in the same directory as this source file for -* further license information. -*/ - -#include "stdafx.h" - -#include - -#include "resource.h" -#include "FireflyShell.h" -#include "DosPath.h" -#include "ServiceControl.h" -#include "MainDlg.h" -#include "ServerEvents.h" -#include "IniFile.h" - -CAppModule _Module; - -#define RUN_KEY _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run") -#define RUN_VALUE _T("FireflyShell") - -Application::Application() -: m_dlg(NULL), m_server_events(&m_icon) -{ - CDosPath path = CDosPath::AppPath(); - SetCurrentDirectory(path.GetPathOnly()); - CDosPath filename(_T("mt-daapd.conf")); - filename |= path; - m_config_path = filename.GetPath(); - ATLTRACE("Config path: %s\n", (const TCHAR *)m_config_path); - - - // Dump an ini file with drive mappings - CDosPath mapfile(_T("mapping.ini")); - mapfile |= path; - m_ini_path = mapfile.GetPath(); - - /* Load the proper language dll, if possible */ - LANGID lidDefault = GetUserDefaultLangID(); - int iBaseLanguage = lidDefault & 0xFF; - iBaseLanguage = GetPrivateProfileInt(_T("shell"),_T("lang_id"),iBaseLanguage,m_ini_path); - - TCHAR tempPath[24]; - wsprintf(tempPath,_T("FireflyShell-%02x.dll"),iBaseLanguage); - CDosPath langlib(tempPath); - langlib |= path; - - HMODULE hLangDLL; - if((hLangDLL=LoadLibrary(langlib.GetPath())) != NULL) { - _AtlBaseModule.SetResourceInstance(hLangDLL); - } - - TCHAR inbuffer[4]; - TCHAR outbuffer[2048]; /* as max_path is unreliable */ - DWORD size; - UNIVERSAL_NAME_INFO * puni = (UNIVERSAL_NAME_INFO *) &outbuffer; - - for(int x='A'; x<='Z'; x++) { - wsprintf(inbuffer,_T("%c:\\"),x); - memset(outbuffer,0,sizeof(outbuffer)); - size = sizeof(outbuffer); - WNetGetUniversalName(inbuffer,UNIVERSAL_NAME_INFO_LEVEL,outbuffer, - &size); - wsprintf(inbuffer,_T("%c"),x); - WritePrivateProfileString(_T("mapping"),inbuffer,puni->lpUniversalName, - mapfile.GetPath()); - } - - - // We don't care if this fails. We can deal with that later. - m_service.Open(_T("Firefly Media Server")); - - CheckCanConfigure(); - - m_unique_name = GenerateUniqueName(); - m_registered_activation_message = ::RegisterWindowMessage(m_unique_name); -} - -Application::~Application() -{ - ATLASSERT(m_dlg == NULL); -} - -void Application::CheckCanConfigure() -{ - IniFile ini(m_config_path); - m_configurable = ini.IsWritable(); -} - -int Application::Run(LPCTSTR lpstrCmdLine, int nCmdShow) -{ - if (ActivatePreviousInstance(lpstrCmdLine, nCmdShow)) - { - ATLTRACE(_T("Already running\n")); - return 0; - } - - CMessageLoop theLoop; - _Module.AddMessageLoop(&theLoop); - - if (!m_icon.Create()) - { - ATLTRACE(_T("Icon creation failed!\n")); - return 0; - } - - EnableServerEvents(true); - - if (ShowDialogAtStart(lpstrCmdLine, nCmdShow)) - Configure(false); - - int nRet = theLoop.Run(); - - EnableServerEvents(false); - - m_icon.Destroy(); - - _Module.RemoveMessageLoop(); - return nRet; -} - -void Application::Exit() -{ - if (m_dlg) - { - m_dlg->DestroyWindow(); - } - ::PostQuitMessage(0); -} - -void Application::Configure(bool move_window) -{ - if (m_dlg) - { - m_dlg->ShowWindow(SW_RESTORE); - SetForegroundWindow(m_dlg->m_hWnd); - } - else - { - CheckCanConfigure(); - - // Other people may need to talk to the dialog while it exists. - CMainDlg dlg(move_window); - m_dlg = &dlg; - dlg.DoModal(); - m_dlg = NULL; - } -} - -void Application::StartService(HWND hwndParent) -{ - CWaitCursor wc; - ATLASSERT(m_service.CanControl()); - if (!m_service.CanControl()) - return; - - if (!m_service.StartAndWait()) - { - MessageBox(hwndParent, IDS_SERVERSTARTFAIL, MB_OK); - } -} - -void Application::StopService(HWND hwndParent) -{ - CWaitCursor wc; - ATLASSERT(m_service.CanControl()); - if (!m_service.CanControl()) - return; - - if (!m_service.StopAndWait()) - { - MessageBox(hwndParent, IDS_SERVERSTOPFAIL, MB_OK); - } -} - -void Application::RestartService(HWND hwndParent) -{ - CWaitCursor wc; - StopService(hwndParent); - StartService(hwndParent); -} - -bool Application::ShowDialogAtStart(LPCTSTR cmdline, int nCmdShow) -{ - if ((cmdline[0] == '-') && (cmdline[1] == 'q')) - return false; - - switch (nCmdShow) - { - case SW_RESTORE: - case SW_SHOW: - case SW_SHOWMAXIMIZED: - case SW_SHOWNORMAL: - case SW_SHOWDEFAULT: - case SW_MAX: - return true; - - default: - return false; - } -} - -BOOL CALLBACK Application::StaticWindowSearcher(HWND hwnd, LPARAM lparam) -{ - DWORD result; - LRESULT ok = ::SendMessageTimeout(hwnd, - static_cast(lparam), - 0, 0, - SMTO_BLOCK | - SMTO_ABORTIFHUNG, - 200, - &result); - if (ok == 0) - return TRUE; // ignore this and continue - - // If we get the magic response then we must have found our Window - // so we can give up. - if (result == lparam) - return FALSE; - else - return TRUE; -} - -bool Application::ActivatePreviousInstance(LPCTSTR lpstrCmdLine, int nCmdShow) -{ - HANDLE h = ::CreateMutex(NULL, TRUE, m_unique_name); - const bool running = (GetLastError() == ERROR_ALREADY_EXISTS); - - if (h != NULL) - { - ::ReleaseMutex(h); - } - - // It seems that getting the other window to activate itself does - // actually work even though Windows anti-focus-stealing stuff - // could try and stop it. - if (running && ShowDialogAtStart(lpstrCmdLine, nCmdShow)) - { - EnumWindows(StaticWindowSearcher, m_registered_activation_message); - return true; - } - - return running; -} - -CString Application::GenerateUniqueName() -{ - // We need to allow one instance to run per desktop. See - // http://www.codeproject.com/cpp/avoidmultinstance.asp - - // First start with some application unique - CString s(_T("Firefly-67A72768-4154-417e-BFA0-FA9B50C342DE")); - - // Now append something desktop unique - DWORD len; - HDESK desktop = GetThreadDesktop(GetCurrentThreadId()); - BOOL result = GetUserObjectInformation(desktop, UOI_NAME, NULL, 0, &len); - DWORD err = ::GetLastError(); - if(!result && err == ERROR_INSUFFICIENT_BUFFER) - { /* NT/2000/XP */ - LPBYTE data = new BYTE[len]; - result = GetUserObjectInformation(desktop, UOI_NAME, data, len, &len); - s += _T("-"); - s += (LPCTSTR)data; - delete [ ] data; - } /* NT/2000/XP */ - else - { /* Win9x */ - s += _T("-Win9x"); - } /* Win9x */ - return s; -} - -void Application::EnableServerEvents(bool b) -{ - if (b) - m_server_events.Start(); - else - m_server_events.Stop(); -} - -CString Application::MakeRunKeyValue() -{ - CString required_path("\""); - required_path += CDosPath::AppPath().GetPath(); - required_path += "\" -q"; - return required_path; -} - -void Application::EnableServiceAutoStart(HWND hwnd, bool enable) { - int required_startup = enable ? SERVICE_AUTO_START : SERVICE_DEMAND_START; - - if (m_service.GetStartup() != required_startup) { - if (!m_service.ConfigureStartup(required_startup)) { - MessageBox(hwnd, IDS_FAILED_CONFIGURE_SERVICE, MB_OK); - } - } -} - -void Application::EnableAppletAutoStart(HWND hwnd, bool enable) { - HKEY hkey; - LONG result = ::RegOpenKeyEx(HKEY_CURRENT_USER, RUN_KEY, 0, KEY_SET_VALUE | STANDARD_RIGHTS_WRITE, &hkey); - if (result == ERROR_SUCCESS) { - if (enable) { - // We need to quote it because the path may contain spaces. - CString str = MakeRunKeyValue(); - result = RegSetValueEx(hkey, RUN_VALUE, 0UL, REG_SZ, reinterpret_cast(static_cast(str)), (str.GetLength() + 1) * sizeof(TCHAR)); - } else { - result = RegDeleteValue(hkey, RUN_VALUE); - if (result == ERROR_FILE_NOT_FOUND) - result = 0; - } - - if (result != ERROR_SUCCESS) { - ATLTRACE("Error:%u\n", result); - MessageBox(hwnd, IDS_FAILED_CONFIGURE_STARTUP, MB_OK); - } - } -} - -bool Application::IsServiceAutoStartEnabled() const { - return (m_service.GetStartup() == SERVICE_AUTO_START); -} - -bool Application::IsAppletAutoStartEnabled() const { - bool run_result = false; - HKEY hkey; - if (::RegOpenKeyEx(HKEY_CURRENT_USER, RUN_KEY, 0, KEY_QUERY_VALUE | STANDARD_RIGHTS_READ, &hkey) == ERROR_SUCCESS) - { - DWORD dwType, cbData; - TCHAR buffer[_MAX_PATH + 1]; - cbData = (_MAX_PATH + 1) * sizeof(TCHAR); - if (::RegQueryValueEx(hkey, RUN_VALUE, NULL, &dwType, reinterpret_cast(buffer), &cbData) == ERROR_SUCCESS) - { - CString path(buffer, cbData - sizeof(TCHAR)); - ATLTRACE("Registry run key path: %s\n", (const TCHAR *)path); - - if (path == MakeRunKeyValue()) - run_result = true; - else - { - // It's there - but it isn't us that it will start. - - // But from the user's perspective, it *is* us, so to make the perception - // match the setting, we'll make this true, rather than some indeterminate - // thing which nobody understands. -- Ron - - run_result = true; - } - } - else - { - // The key doesn't exist. - run_result = false; - } - } - else - run_result = false; - - return run_result; -} - -int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow) -{ - // this resolves ATL window thunking problem when Microsoft Layer for Unicode (MSLU) is used - ::DefWindowProc(NULL, 0, 0, 0L); - - AtlInitCommonControls(ICC_BAR_CLASSES); // add flags to support other controls - - HRESULT hRes = _Module.Init(NULL, hInstance); - ATLASSERT(SUCCEEDED(hRes)); - - int nRet; - { - // Application object is destroyed prior to undoing everything above. - Application app; - nRet = app.Run(lpstrCmdLine, nCmdShow); - } - - _Module.Term(); - return nRet; -} diff --git a/win32/FireflyShell/FireflyShell.exe.manifest b/win32/FireflyShell/FireflyShell.exe.manifest deleted file mode 100644 index f0d52335..00000000 --- a/win32/FireflyShell/FireflyShell.exe.manifest +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/win32/FireflyShell/FireflyShell.h b/win32/FireflyShell/FireflyShell.h deleted file mode 100644 index 1071108f..00000000 --- a/win32/FireflyShell/FireflyShell.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#ifndef FIREFLYSHELL_H -#define FIREFLYSHELL_H 1 - -#include "singleton.h" -#include "NotifyIcon.h" -#include "ServiceControl.h" -#include -#include -#include "ServerEvents.h" - -class CMainDlg; - -/// The main application. Not a window. -class Application : public Singleton -{ - CNotifyIcon m_icon; - CMainDlg *m_dlg; - CString m_config_path; - CString m_ini_path; - Service m_service; - ServiceStatusMonitor m_service_monitor; - ServerEvents m_server_events; - CString m_unique_name; - UINT m_registered_activation_message; - bool m_configurable; - - /// Returns true if a previous instance was found. Only - /// actually activates a previous instance if nCmdShow - /// indicates so. - bool ActivatePreviousInstance(LPCTSTR cmdline, int nCmdShow); - - /// Helper for ActivatePreviousInstance. - static BOOL CALLBACK Application::StaticWindowSearcher(HWND hwnd, LPARAM lparam); - - /// Generate a unique name that can be used to detect multiple instances. - static CString GenerateUniqueName(); - - // Depending on how the application was launched we display the dialog or not. - static bool ShowDialogAtStart(LPCTSTR cmdline, int nCmdShow); - - static CString MakeRunKeyValue(); - -public: - Application(); - ~Application(); - - /// Gets the application going - int Run(LPCTSTR lpstrCmdLine, int nCmdShow); - - /// mt-daapd.conf path - CString GetConfigPath() - { - return m_config_path; - } - - /// Registered message used to activate other instances - UINT GetRegisteredActivationMessage() const - { - return m_registered_activation_message; - } - - // Pass true to move the window so it is near the mouse - // cursor. - void Configure(bool move_window); - void Exit(); - - // Service control - void StartService(HWND hwndParent); - void StopService(HWND hwndParent); - void RestartService(HWND hwndParent); - - Service::Status GetServiceStatus() - { - Service::Status status; - if (m_service.IsOpen()) - { - m_service.GetStatus(&status); - } - return status; - } - - // Expensive - only do it just before displaying the dialog box. - void CheckCanConfigure(); - - // Cheap. - bool CanConfigure() const - { - // We need to both rewrite the config file and - // control the service if we're going to be - // useful. - return m_configurable && m_service.CanControl(); - } - - bool CanControlService() const - { - return m_service.CanControl(); - } - - void CheckServiceStatus() - { - m_service_monitor.Poll(&m_service); - } - - void ServiceStatusSubscribe(ServiceStatusObserver *obs) - { - m_service_monitor.Subscribe(obs); - } - - void ServiceStatusUnsubscribe(ServiceStatusObserver *obs) - { - m_service_monitor.Unsubscribe(obs); - } - - CString GetServiceBinaryPath() const - { - return m_service.GetBinaryPath(); - } - - /// Used to disable listening for events from the server when this user is - /// not active. - void EnableServerEvents(bool); - - /// Enable/disable automatic startup of service and FireflyShell. - void EnableAppletAutoStart(HWND, bool); - void EnableServiceAutoStart(HWND, bool); - - /// Reports 0 for disabled, 1 for enabled - bool IsAppletAutoStartEnabled() const; - bool IsServiceAutoStartEnabled() const; - - int MessageBox(HWND hwnd, UINT id, UINT flags) - { - CString title, text; - ATLVERIFY(title.LoadString(IDR_MAINFRAME)); - ATLVERIFY(text.LoadString(id)); - return ::MessageBox(hwnd, text, title, flags); - } -}; - -inline Application *GetApplication() { return Application::GetInstance(); } - -#endif // FIREFLYSHELL_H diff --git a/win32/FireflyShell/FireflyShell.rc b/win32/FireflyShell/FireflyShell.rc deleted file mode 100644 index 280a1fda..00000000 --- a/win32/FireflyShell/FireflyShell.rc +++ /dev/null @@ -1,294 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "atlres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""atlres.h""\r\0" -END - -3 TEXTINCLUDE -BEGIN - "#ifndef APSTUDIO_INVOKED\r\n" - "#include ""version.rc""\r\n" - "#endif // !APSTUDIO_INVOKED\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDR_MAINFRAME ICON "res\\FireflyShell.ico" -IDI_SHELL_RUNNING ICON "res\\shellrunning.ico" -IDI_SHELL_STOPPED ICON "res\\shellstopped.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_PAGE_ABOUT DIALOGEX 0, 0, 300, 228 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - CTEXT "For help, tips and troubleshooting advice...",IDC_FIREFLYLINK,12,92,276,9,NOT WS_GROUP - GROUPBOX "Version information",IDC_STATIC,6,121,288,100 - CONTROL "",IDC_VERSIONLIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,12,132,276,68 - PUSHBUTTON "&Copy to Clipboard",IDC_COPY,192,203,96,14 - CONTROL 208,IDC_LOGO,"Static",SS_BITMAP | SS_CENTERIMAGE | SS_SUNKEN | WS_BORDER,6,7,288,73 - CTEXT "For information on Firefly compatible music players...",IDC_ROKULINK,12,106,276,9,NOT WS_GROUP -END - -IDD_PAGE_BASIC DIALOGEX 0, 0, 300, 230 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Library" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - LTEXT "Library &Name",IDC_STATIC,12,24,74,8 - EDITTEXT IDC_SERVERNAME,86,21,202,14,ES_AUTOHSCROLL - LTEXT "Media &Location",IDC_STATIC,12,61,74,8 - EDITTEXT IDC_PATH,86,57,202,14,ES_AUTOHSCROLL - PUSHBUTTON "&Browse...",IDC_BROWSE,228,76,60,14 - GROUPBOX "Security",IDC_STATIC,7,113,287,103 - CONTROL "&Protect Firefly media library with a password",IDC_PROTECT, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,135,276,10 - LTEXT "Pass&word",IDC_STATIC,12,156,74,8 - EDITTEXT IDC_PASSWORD,86,154,114,14,ES_PASSWORD | ES_AUTOHSCROLL - LTEXT "You can limit access to your music library by assigning a password. If a password is assigned, only clients that provide the correct password will be able to play music from your library.",IDC_STATIC,12,180,276,26,SS_NOPREFIX -END - -IDD_PAGE_LOG DIALOGEX 0, 0, 300, 220 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Log" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - EDITTEXT IDC_LOG,6,6,288,189,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL - PUSHBUTTON "&Refresh",IDC_REFRESH,244,200,50,14 -END - -IDD_PAGE_ADVANCED DIALOGEX 0, 0, 300, 220 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Server" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Server Status",IDC_STATIC,6,7,288,82 - LTEXT "Current state of the server goes here",IDC_SERVERSTATE,12,28,199,25 - PUSHBUTTON "&Stop Server",IDC_STOPSERVICE,218,28,70,14 - CONTROL "&Start Firefly when Windows starts",IDC_AUTOSTART, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,59,252,10 - CONTROL "&Enable Firefly icon in system tray",IDC_AUTOSTART_ICON, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,73,252,10 - GROUPBOX "Advanced",IDC_STATIC,6,93,288,61 - LTEXT "Server port number",IDC_STATIC,12,108,99,11 - EDITTEXT IDC_SERVERPORT,105,105,42,14,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "",IDC_PORTSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,146,105,11,14 - LTEXT "You may need to change this if another program is already using this port.",IDC_STATIC,12,129,276,23 - GROUPBOX "Web administration",IDC_STATIC,6,159,288,54 - LTEXT "Firefly Media Server also provides a web administration interface.",IDC_STATIC,12,177,198,20 - PUSHBUTTON "&Open",IDC_WEBADMIN,218,177,70,14 - PUSHBUTTON "&Start Server",IDC_STARTSERVICE,218,28,70,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_PAGE_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 6 - RIGHTMARGIN, 294 - VERTGUIDE, 12 - VERTGUIDE, 131 - VERTGUIDE, 218 - VERTGUIDE, 288 - TOPMARGIN, 7 - BOTTOMMARGIN, 221 - END - - IDD_PAGE_BASIC, DIALOG - BEGIN - LEFTMARGIN, 6 - RIGHTMARGIN, 294 - VERTGUIDE, 12 - VERTGUIDE, 86 - VERTGUIDE, 131 - VERTGUIDE, 218 - VERTGUIDE, 288 - TOPMARGIN, 7 - BOTTOMMARGIN, 216 - END - - IDD_PAGE_LOG, DIALOG - BEGIN - LEFTMARGIN, 6 - RIGHTMARGIN, 294 - VERTGUIDE, 6 - VERTGUIDE, 12 - VERTGUIDE, 216 - VERTGUIDE, 288 - HORZGUIDE, 6 - HORZGUIDE, 214 - END - - IDD_PAGE_ADVANCED, DIALOG - BEGIN - LEFTMARGIN, 6 - RIGHTMARGIN, 294 - VERTGUIDE, 12 - VERTGUIDE, 105 - VERTGUIDE, 218 - VERTGUIDE, 288 - TOPMARGIN, 7 - BOTTOMMARGIN, 216 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Accelerator -// - -IDR_MAINFRAME ACCELERATORS -BEGIN - "N", ID_FILE_NEW, VIRTKEY, CONTROL - "O", ID_FILE_OPEN, VIRTKEY, CONTROL - "S", ID_FILE_SAVE, VIRTKEY, CONTROL - "P", ID_FILE_PRINT, VIRTKEY, CONTROL - "Z", ID_EDIT_UNDO, VIRTKEY, CONTROL - "X", ID_EDIT_CUT, VIRTKEY, CONTROL - "C", ID_EDIT_COPY, VIRTKEY, CONTROL - "V", ID_EDIT_PASTE, VIRTKEY, CONTROL - VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT - VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT - VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL - VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT - VK_F6, ID_NEXT_PANE, VIRTKEY - VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -IDM_CONTEXT MENU -BEGIN - POPUP "" - BEGIN - MENUITEM "&Configure Firefly Media Server...", ID_CONFIGURE - MENUITEM "E&xit", ID_EXIT - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDR_MAINFRAME "Firefly Media Server" - IDS_SERVER_RUNNING "The Firefly media server is currently running." - IDS_SERVER_STOPPED "The Firefly media server is not currently running." - IDS_SERVERSTARTFAIL "Failed to start Firefly Media Server." - IDS_SERVERSTOPFAIL "Failed to stop Firefly Media Server." - IDS_SERVER_PENDING "The Firefly media server is currently busy." - IDS_SERVER_START "&Start" - IDS_SERVER_STOP "&Stop" - IDS_SCAN_START "Scanning for media is in progress\n\nThis may take some time." - IDS_SCAN_STOP "Scanning for media is complete." - IDS_NOT_ADMIN "You must be logged in as a local administrator to start and stop the server." - IDS_QUERYSERVERRESTART "Changing the configuration will require a restart of the Firefly Media Server. Are you sure you want to do this?" - IDS_VERSIONINFO_DESCRIPTION "Description" - IDS_VERSIONINFO_VERSION "Version" - IDS_VERSIONINFO_PATH "Path" - IDS_FAILED_CONFIGURE_SERVICE "Failed to reconfigure service." -END - -STRINGTABLE -BEGIN - IDS_FAILED_CONFIGURE_STARTUP "Failed to reconfigure startup application." - IDS_LOG_NOLOG "Firefly server logging is not enabled." - IDS_LOG_OPENFAILED "Failed to open server log file '%s'." -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (U.K.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_LOGO BITMAP "res\\logo.bmp" -#endif // English (U.K.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -#ifndef APSTUDIO_INVOKED -#include "version.rc" -#endif // !APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/win32/FireflyShell/FireflyShell.vcproj b/win32/FireflyShell/FireflyShell.vcproj deleted file mode 100644 index 5b60eac7..00000000 --- a/win32/FireflyShell/FireflyShell.vcproj +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/FireflyShell/FireflyShellDEU.vcproj b/win32/FireflyShell/FireflyShellDEU.vcproj deleted file mode 100644 index 137d93f8..00000000 --- a/win32/FireflyShell/FireflyShellDEU.vcproj +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/FireflyShell/FireflyShellFRA.rc b/win32/FireflyShell/FireflyShellFRA.rc deleted file mode 100644 index 3560540a..00000000 Binary files a/win32/FireflyShell/FireflyShellFRA.rc and /dev/null differ diff --git a/win32/FireflyShell/FireflyShellFRA.vcproj b/win32/FireflyShell/FireflyShellFRA.vcproj deleted file mode 100644 index 930eaada..00000000 --- a/win32/FireflyShell/FireflyShellFRA.vcproj +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/FireflyShell/FireflyShellITA.rc b/win32/FireflyShell/FireflyShellITA.rc deleted file mode 100644 index 1303370a..00000000 Binary files a/win32/FireflyShell/FireflyShellITA.rc and /dev/null differ diff --git a/win32/FireflyShell/FireflyShellITA.vcproj b/win32/FireflyShell/FireflyShellITA.vcproj deleted file mode 100644 index 872685aa..00000000 --- a/win32/FireflyShell/FireflyShellITA.vcproj +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/FireflyShell/FireflyShellJPN.rc b/win32/FireflyShell/FireflyShellJPN.rc deleted file mode 100644 index 1303370a..00000000 Binary files a/win32/FireflyShell/FireflyShellJPN.rc and /dev/null differ diff --git a/win32/FireflyShell/FireflyShellJPN.vcproj b/win32/FireflyShell/FireflyShellJPN.vcproj deleted file mode 100644 index 3585eac9..00000000 --- a/win32/FireflyShell/FireflyShellJPN.vcproj +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/FireflyShell/FireflyShellNLD.rc b/win32/FireflyShell/FireflyShellNLD.rc deleted file mode 100644 index a069bae8..00000000 Binary files a/win32/FireflyShell/FireflyShellNLD.rc and /dev/null differ diff --git a/win32/FireflyShell/FireflyShellNLD.vcproj b/win32/FireflyShell/FireflyShellNLD.vcproj deleted file mode 100644 index 36467f8c..00000000 --- a/win32/FireflyShell/FireflyShellNLD.vcproj +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/FireflyShell/FireflyShellSWE.rc b/win32/FireflyShell/FireflyShellSWE.rc deleted file mode 100644 index 7d65d946..00000000 Binary files a/win32/FireflyShell/FireflyShellSWE.rc and /dev/null differ diff --git a/win32/FireflyShell/FireflyShellSWE.vcproj b/win32/FireflyShell/FireflyShellSWE.vcproj deleted file mode 100644 index df5418cb..00000000 --- a/win32/FireflyShell/FireflyShellSWE.vcproj +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/FireflyShell/IniFile.h b/win32/FireflyShell/IniFile.h deleted file mode 100644 index 412dc4e8..00000000 --- a/win32/FireflyShell/IniFile.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#ifndef INIFILE_H -#define INIFILE_H -#include "DosPath.h" - -class IniFile -{ - CString m_path; - -public: - explicit IniFile(const CString &path) - : m_path(path) - { - } - - CString GetString(const TCHAR *section, const TCHAR *key, const TCHAR *defstring) - { - CString str; - ::GetPrivateProfileString(section, key, defstring, str.GetBuffer(512), 512, m_path); - str.ReleaseBuffer(); - return str; - } - - bool SetString(const TCHAR *section, const TCHAR *key, const TCHAR *value) - { - return ::WritePrivateProfileString(section, key, value, m_path) != 0; - } - - int GetInteger(const TCHAR *section, const TCHAR *key, int defvalue) - { - return ::GetPrivateProfileInt(section, key, defvalue, m_path); - } - - bool SetInteger(const TCHAR *section, const TCHAR *key, int value) - { - CString str; - str.Format(_T("%d"), value); - return ::WritePrivateProfileString(section, key, str, m_path) != 0; - } - - bool IsWritable() const - { - if (::WritePrivateProfileString(_T("Writability Test"), _T("Writability Test"), _T("Test"), m_path)) - { - // Remove it then. - ::WritePrivateProfileString(_T("Writability Test"), NULL, NULL, m_path); - return true; - } - else - return false; - } -}; -#endif // INIFILE_H diff --git a/win32/FireflyShell/LogPage.cpp b/win32/FireflyShell/LogPage.cpp deleted file mode 100644 index f31242f3..00000000 --- a/win32/FireflyShell/LogPage.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#include "stdafx.h" -#include "LogPage.h" -#include "FireflyShell.h" -#include "IniFile.h" - -LRESULT CLogPage::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) -{ - LoadLog(); - return 0; -} - -LRESULT CLogPage::OnRefresh(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) -{ - LoadLog(); - return 0; -} - -void CLogPage::LoadLog() -{ - CWaitCursor wait; - - const size_t MAX_LOG = 65000; - - IniFile ini(GetApplication()->GetConfigPath()); - - CString filename = ini.GetString(_T("general"), _T("logfile"), _T("")); - if (filename.IsEmpty()) - { - CString str; - str.LoadString(IDS_LOG_NOLOG); - GetDlgItem(IDC_LOG).SetWindowText(str); - } - else - { - FILE *fp = _tfopen(filename, _T("r")); - if (fp) - { - // Fathom the length - fseek(fp, 0, SEEK_END); - long len = ftell(fp); - if (len > MAX_LOG) - { - len = MAX_LOG; - fseek(fp, -len, SEEK_END); - } - else - { - fseek(fp, 0, SEEK_SET); - } - - char *buffer = new char[len + 1]; - size_t nread = fread(buffer, 1, len, fp); - ATLASSERT(nread < MAX_LOG); - buffer[nread] = 0; - fclose(fp); - - // Normalise the line endings. Not particularly efficient but - // it does work. It would be nice if we could cheaply tell - // CString to preallocate a certain size. - CString log(_T("Log file: ")); - log += filename; - log += _T("\r\n\r\n"); - - size_t n = 0; - while (n < nread) - { - switch (buffer[n]) - { - case '\r': - // Ignore - break; - case '\n': - log += _T("\r\n"); - break; - default: - log += buffer[n]; - break; - } - ++n; - } - - GetDlgItem(IDC_LOG).SetWindowText(log); - delete []buffer; - } - else - { - CString str; - str.Format(IDS_LOG_OPENFAILED, filename); - GetDlgItem(IDC_LOG).SetWindowText(str); - } - } -} - diff --git a/win32/FireflyShell/LogPage.h b/win32/FireflyShell/LogPage.h deleted file mode 100644 index 7e051be7..00000000 --- a/win32/FireflyShell/LogPage.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#ifndef LOGPAGE_H -#define LOGPAGE_H 1 - -#include "resource.h" - -class CLogPage : - public CPropertyPageImpl -{ - typedef CPropertyPageImpl base; - -public: - enum { IDD = IDD_PAGE_LOG }; - -private: - - // Message Handlers - BEGIN_MSG_MAP(CLogPage) - MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) - COMMAND_HANDLER(IDC_REFRESH, BN_CLICKED, OnRefresh) - CHAIN_MSG_MAP(base) - END_MSG_MAP() - - LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); - LRESULT OnRefresh(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); - - void LoadLog(); - -}; - -#endif // LOGPAGE_H \ No newline at end of file diff --git a/win32/FireflyShell/MainDlg.cpp b/win32/FireflyShell/MainDlg.cpp deleted file mode 100644 index d3ea0a61..00000000 --- a/win32/FireflyShell/MainDlg.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#include "stdafx.h" -#include "resource.h" - -#include "MainDlg.h" -#include "FireflyShell.h" - -CMainDlg::CMainDlg(bool move_window) - : m_window_move_required(move_window) -{ - this->AddPage(m_pageConfig); - this->AddPage(m_pageAdvanced); - this->AddPage(m_pageLog); - this->AddPage(m_pageAbout); - - ATLVERIFY(m_strTitle.LoadString(IDR_MAINFRAME)); - - this->SetTitle(m_strTitle); -} - -void CMainDlg::OnSheetInitialized() -{ - HICON hIcon = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME), - IMAGE_ICON, ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON), LR_DEFAULTCOLOR); - SetIcon(hIcon, TRUE); - HICON hIconSmall = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME), - IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR); - SetIcon(hIconSmall, FALSE); -} - -LRESULT CMainDlg::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled) -{ - bool restart_service = false; - if (HIWORD(wParam) == BN_CLICKED) - { - const UINT id = LOWORD(wParam); - - if ((id == IDOK || id == ID_APPLY_NOW) - && GetDlgItem(ID_APPLY_NOW).IsWindowEnabled() - && GetApplication()->GetServiceStatus().IsRunning()) - { - CString title, text; - title.LoadString(IDR_MAINFRAME); - text.LoadString(IDS_QUERYSERVERRESTART); - if (MessageBox(text, title, MB_YESNO) != IDYES) - return 0; - restart_service = true; - } - } - - LRESULT result = base::OnCommand(uMsg, wParam, lParam, bHandled); - if (restart_service) - GetApplication()->RestartService(m_hWnd); - - return result; -} - -void CMainDlg::PositionWindow() -{ - POINT cursor_pt; - GetCursorPos(&cursor_pt); - - CRect desktop_rect; - if (SystemParametersInfo(SPI_GETWORKAREA, 0, &desktop_rect, 0)) - { - // Don't put it hard against the edge of the screen or task bar. - desktop_rect.DeflateRect(CSize(4, 4)); - - CRect window_rect; - GetWindowRect(&window_rect); - - // First move the window so that it's middle is at the cursor position. - CPoint pos; - - pos.x = cursor_pt.x - window_rect.Width()/2; - pos.y = cursor_pt.y - window_rect.Height()/2; - - // Now make that window appear on the work area but in case it doesn't fit prefer to fit the - // top left. - if (pos.x + window_rect.Width() > desktop_rect.right) - pos.x = desktop_rect.right - window_rect.Width(); - if (pos.y + window_rect.Height() > desktop_rect.bottom) - pos.y = desktop_rect.bottom - window_rect.Height(); - - if (pos.x < desktop_rect.left) - pos.x = desktop_rect.left; - if (pos.y < desktop_rect.top) - pos.y = desktop_rect.top; - - SetWindowPos(NULL, pos.x, pos.y, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOZORDER); - } -} - -void CMainDlg::OnMove(CPoint pt) -{ - if (m_window_move_required) - { - // We don't want to recurse. - m_window_move_required = false; - PositionWindow(); - } - else - { - SetMsgHandled(false); - } -} \ No newline at end of file diff --git a/win32/FireflyShell/MainDlg.h b/win32/FireflyShell/MainDlg.h deleted file mode 100644 index 9484c21b..00000000 --- a/win32/FireflyShell/MainDlg.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#ifndef MAINDLG_H -#define MAINDLG_H 1 - -#include "ConfigPage.h" -#include "AdvancedPage.h" -#include "LogPage.h" -#include "AboutPage.h" - -class CMainDlg : public CPropertySheetImpl -{ - typedef CPropertySheetImpl base; - - CString m_strTitle; - - CConfigPage m_pageConfig; - CAdvancedPage m_pageAdvanced; - CLogPage m_pageLog; - CAboutPage m_pageAbout; - bool m_window_move_required; - - BEGIN_MSG_MAP(CMainDlg) - MESSAGE_HANDLER(WM_COMMAND, OnCommand) - MSG_WM_MOVE(OnMove) - CHAIN_MSG_MAP(base) - END_MSG_MAP() - - LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); - void OnMove(CPoint); - void PositionWindow(); - - void OnSheetInitialized(); - -public: - // Pass true if you want the window to be moved to near the mouse pointer. - // This is usually only the case if the window is displayed as a result of - // clicking on the shell notification icon. - CMainDlg(bool move_window); -}; - -#endif // MAINDLG_H \ No newline at end of file diff --git a/win32/FireflyShell/NotifyIcon.cpp b/win32/FireflyShell/NotifyIcon.cpp deleted file mode 100644 index fe008a48..00000000 --- a/win32/FireflyShell/NotifyIcon.cpp +++ /dev/null @@ -1,296 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#include "stdafx.h" -#include "resource.h" -#include "NotifyIcon.h" -#include "FireflyShell.h" - -CNotifyMsg::CNotifyMsg(UINT32 id, UINT32 intval, const CString &strval) { - this->id = id; - this->intval = intval; - this->strval = strval; -} - - -CNotifyIcon::CNotifyIcon() -{ - ZeroMemory(&m_nid, sizeof(NOTIFYICONDATA)); - m_nid.cbSize = sizeof(NOTIFYICONDATA); - m_nid.uID = ID_SHELLNOTIFY; - - m_running_icon = AtlLoadIcon(IDI_SHELL_RUNNING); - m_stopped_icon = AtlLoadIcon(IDI_SHELL_STOPPED); -} - -BOOL CNotifyIcon::Create() -{ - m_registered_activation_message = GetApplication()->GetRegisteredActivationMessage(); - - RECT rect = {0, 0, 0, 0}; - - // Hidden window. - if (base::Create(NULL, rect, _T("FireflyShellNotifyIconHidden"), WS_POPUP)) - { - m_nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP; - - InflictIconState(); - - //wcsncpy(niData.szTip, TEXT("Foo?"), sizeof(niData.szTip)); - m_nid.hWnd = m_hWnd; - m_nid.uCallbackMessage = PRIVATE_WM_NOTIFYICON; - - Shell_NotifyIcon(NIM_ADD, &m_nid); - - SetTimer(TIMER_ID, 5000, NULL); - - GetApplication()->ServiceStatusSubscribe(this); - - EnableUserSwitchNotifications(); - - return TRUE; - } - - return FALSE; -} - -void CNotifyIcon::Destroy() -{ - GetApplication()->ServiceStatusUnsubscribe(this); - KillTimer(TIMER_ID); - Shell_NotifyIcon(NIM_DELETE, &m_nid); - DestroyIcon(m_nid.hIcon); - - - base::DestroyWindow(); -} - -void CNotifyIcon::OnClose() -{ - // The only time this should happen is if something else explicitly - // sends us the message (such as the installer). We'll just - // exit completely. - GetApplication()->Exit(); -} - -void CNotifyIcon::PopupBalloon(CString &title, CString &text, DWORD flags) { - m_nid.uFlags |= NIF_INFO; - SafeStringCopy(m_nid.szInfoTitle, title, 64); - SafeStringCopy(m_nid.szInfo,text, 256); - m_nid.dwInfoFlags = flags; - m_nid.uTimeout = 10000; - Shell_NotifyIcon(NIM_MODIFY, &m_nid); -} - -void CNotifyIcon::PopupBalloon(UINT title_id, UINT text_id, DWORD flags) { - CString title, text; - title.LoadString(title_id); - text.LoadString(text_id); - - PopupBalloon(title, text, flags); -} - -void CNotifyIcon::Update() -{ - InflictIconState(); - // I suspect we'll need this line too. - // m_nid.uFlags &= ~NIF_INFO; - Shell_NotifyIcon(NIM_MODIFY, &m_nid); -} - -void CNotifyIcon::InflictIconState() -{ - // Will the icons leak? - Service::Status status = GetApplication()->GetServiceStatus(); - UINT state_id; - if (status.IsPending()) - { - state_id = IDS_SERVER_PENDING; - m_nid.hIcon = m_stopped_icon; // As good as any? - } - else if (status.IsRunning()) - { - state_id = IDS_SERVER_RUNNING; - m_nid.hIcon = m_running_icon; - } - else - { - state_id = IDS_SERVER_STOPPED; - m_nid.hIcon = m_stopped_icon; - } - - CString tip; - tip.LoadString(state_id); - SafeStringCopy(m_nid.szTip, tip, 64); -} - -void CNotifyIcon::OnServiceStatus(Service::Status old_status, Service::Status new_status) -{ - Update(); -} - -void CNotifyIcon::OnTimer(UINT id, TIMERPROC proc) -{ - if (id == TIMER_ID) - { - GetApplication()->CheckServiceStatus(); - } -} - -LRESULT CNotifyIcon::OnNotifyIconMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) -{ - switch (lParam) - { - case WM_LBUTTONDBLCLK: - GetApplication()->Configure(true); - bHandled = true; - return 0L; - case WM_RBUTTONDOWN: - case WM_CONTEXTMENU: - OnContextMenu(); - bHandled = true; - return 0L; - } - - return 0L; -} - -void CNotifyIcon::OnContextMenu() -{ - HMENU hMenu; - - HINSTANCE hInstance = _Module.GetResourceInstance(); - hMenu = ::LoadMenu(hInstance, MAKEINTRESOURCE(IDM_CONTEXT)); - - POINT pt; - GetCursorPos(&pt); - - // See TrackPopupMenu in MSDN. - SetForegroundWindow(m_hWnd); - //::SetForegroundWindow(m_hWnd); - HMENU hPopup = GetSubMenu(hMenu, 0); - ::SetMenuDefaultItem(hPopup, ID_CONFIGURE, FALSE); - TrackPopupMenu(hPopup, TPM_LEFTALIGN | TPM_BOTTOMALIGN, pt.x, pt.y, 0, m_hWnd, NULL); - ::PostMessage(m_hWnd, WM_NULL, 0, 0); - - ::DestroyMenu(hMenu); -} - -LRESULT CNotifyIcon::OnConfigure(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) -{ - GetApplication()->Configure(true); - return 0; -} - -LRESULT CNotifyIcon::OnExit(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) -{ - /// @todo - Application::GetInstance()->Exit(); - return 0; -} - -LRESULT CNotifyIcon::OnRegisteredActivation(UINT, WPARAM, LPARAM, BOOL &bHandled) -{ - ATLTRACE(_T("Activate\n")); - bHandled = true; - GetApplication()->Configure(false); - - // We return a magic number so that the caller knows we've been found - // and can give up. - return m_registered_activation_message; -} - -void CNotifyIcon::OnServerEvent(UINT32 id, UINT32 intval, const CString &strval) { - // Note that we're running on a different thread here. We need to punt - // the event over to the main thread using SendMessage. - CNotifyMsg *pMsgNew = new CNotifyMsg(id, intval,strval); - - switch (id) { - case 0: - case 1: - case 2: - SendMessage(WM_SERVEREVENT, id, (LPARAM) pMsgNew); - break; - default: - ATLASSERT(false); - break; - } -} - -LRESULT CNotifyIcon::OnServerEvent(UINT, WPARAM wparam, LPARAM lparam, BOOL &bHandled) { - CNotifyMsg *pMsgNotify = (CNotifyMsg *)lparam; - bHandled = true; - CString title; - - title.LoadString(IDR_MAINFRAME); - -// CString title, text; -// title.LoadString(title_id); - - switch (wparam) { - case 0: - if(pMsgNotify->GetIntval() == 0) - PopupBalloon(title,pMsgNotify->GetStrval()); - break; - case 1: - PopupBalloon(IDR_MAINFRAME, IDS_SCAN_START); - break; - case 2: - PopupBalloon(IDR_MAINFRAME, IDS_SCAN_STOP); - break; - } - delete(pMsgNotify); - return 0; -} - -void CNotifyIcon::EnableUserSwitchNotifications() -{ - HMODULE h = ::LoadLibrary(_T("WtsApi32.dll")); - if (h) - { - typedef BOOL (WINAPI *Proc)(HWND, DWORD); - Proc fn = reinterpret_cast(GetProcAddress(h, "WTSRegisterSessionNotification")); - if (fn) - { - (*fn)(m_hWnd, NOTIFY_FOR_THIS_SESSION); - } - ::FreeLibrary(h); - } -} - -LRESULT CNotifyIcon::OnSessionChange(UINT, WPARAM wparam, LPARAM, BOOL &bHandled) -{ - // Because only one process can get events through the mailslot we - // disconnect from it when the user uses XP fast user switching to - // switch to a different user. - switch (wparam) - { - case WTS_CONSOLE_CONNECT: - case WTS_REMOTE_CONNECT: - ATLTRACE("SESSION CONNECT\n"); - GetApplication()->EnableServerEvents(true); - break; - - case WTS_CONSOLE_DISCONNECT: - case WTS_REMOTE_DISCONNECT: - ATLTRACE("SESSION DISCONNECT\n"); - GetApplication()->EnableServerEvents(false); - break; - } - bHandled = true; - return 0; -} - diff --git a/win32/FireflyShell/NotifyIcon.h b/win32/FireflyShell/NotifyIcon.h deleted file mode 100644 index b809869c..00000000 --- a/win32/FireflyShell/NotifyIcon.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#ifndef NOTIFYICON_H -#define NOTIFYICON_H - -#include "ServiceControl.h" -#include "ServerEvents.h" - -class CNotifyMsg { - UINT32 id; - UINT32 intval; - CString strval; - -public: - CNotifyMsg(UINT32 id, UINT32 intval, const CString &strval); - CString &GetStrval(void) { return strval; }; - UINT32 GetIntval(void) { return intval; }; -}; - - -class CNotifyIcon - : public CWindowImpl, - public ServiceStatusObserver, - public ServerEvents::Observer -{ - typedef CWindowImpl base; - - NOTIFYICONDATA m_nid; - HICON m_running_icon; - HICON m_stopped_icon; - UINT m_registered_activation_message; - - enum { TIMER_ID = 43 }; - enum { WM_SERVEREVENT = WM_APP + 42 }; - - enum { PRIVATE_WM_NOTIFYICON = WM_USER + 42 }; - - BEGIN_MSG_MAP(CNotifyIcon) - MESSAGE_HANDLER(PRIVATE_WM_NOTIFYICON, OnNotifyIconMessage) - COMMAND_ID_HANDLER(ID_CONFIGURE, OnConfigure) - COMMAND_ID_HANDLER(ID_EXIT, OnExit) - MESSAGE_HANDLER(m_registered_activation_message, OnRegisteredActivation) - MESSAGE_HANDLER(WM_SERVEREVENT, OnServerEvent) - MESSAGE_HANDLER(WM_WTSSESSION_CHANGE, OnSessionChange) - MSG_WM_TIMER(OnTimer) - MSG_WM_CLOSE(OnClose) - END_MSG_MAP() - - // Message handlers - void OnContextMenu(); - LRESULT OnNotifyIconMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); - LRESULT OnConfigure(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); - LRESULT OnExit(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); - LRESULT OnRegisteredActivation(UINT, WPARAM, LPARAM, BOOL &bHandled); - LRESULT OnServerEvent(UINT, WPARAM, LPARAM, BOOL &bHandled); - LRESULT OnSessionChange(UINT, WPARAM, LPARAM, BOOL &bHandled); - void OnTimer(UINT id, TIMERPROC proc); - void OnClose(); - - void PopupBalloon(UINT title_id, UINT text_id, DWORD flags = NIIF_INFO); - void PopupBalloon(CString &title, CString &text, DWORD flags = NIIF_INFO); - - void InflictIconState(); - void Update(); - - // Terminal services stuff on XP. - void EnableUserSwitchNotifications(); - - // ServiceStatusObserver - void OnServiceStatus(Service::Status old_status, Service::Status new_status); - - // ServerEvents::Observer - void OnServerEvent(UINT32 id, UINT32 intval, const CString &str); - -public: - CNotifyIcon(); - BOOL Create(); - void Destroy(); - -}; - -#endif // NOTIFYICON_H \ No newline at end of file diff --git a/win32/FireflyShell/README.txt b/win32/FireflyShell/README.txt deleted file mode 100644 index 0c7fe06b..00000000 --- a/win32/FireflyShell/README.txt +++ /dev/null @@ -1,17 +0,0 @@ -The FireflyShell source code is distributed under the terms of the GNU -General Public License Version 2 as published by the Free Software -Foundation. You can find a copy of this license in the -admin-root/gpl-license.txt file. - -This program uses the Microsoft Windows Template Library which is released -under the Common Public License. The copyright holders of FireflyShell -explicitly grant the additional right to distribute binaries produced from -source code derived from FireflyShell that are linked with the Microsoft -Windows Template Library. - -Note that you may not be able to incorporate third party GNU General Public -Licensed code into FireflyShell and then distribute binaries unless you have -a similar additional right from the copyright holder. - -You can find the Windows Template Library at -http://sourceforge.net/projects/wtl/ diff --git a/win32/FireflyShell/ServerEvents.cpp b/win32/FireflyShell/ServerEvents.cpp deleted file mode 100644 index 100f8d38..00000000 --- a/win32/FireflyShell/ServerEvents.cpp +++ /dev/null @@ -1,142 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#include "stdafx.h" -#include "ServerEvents.h" - -ServerEvents::ServerEvents(Observer *obs) : - m_thread(INVALID_HANDLE_VALUE), - m_mailslot(INVALID_HANDLE_VALUE), - m_obs(obs) -{ -} - -ServerEvents::~ServerEvents() -{ - ATLASSERT(m_mailslot == INVALID_HANDLE_VALUE); - ATLASSERT(m_thread == INVALID_HANDLE_VALUE); -} - -bool ServerEvents::Start() -{ - ATLASSERT(m_mailslot == INVALID_HANDLE_VALUE); - ATLASSERT(m_thread == INVALID_HANDLE_VALUE); - ATLASSERT(m_obs != NULL); - - m_mailslot = ::CreateMailslot(_T("\\\\.\\mailslot\\FireflyMediaServer--67A72768-4154-417e-BFA0-FA9B50C342DE"), 0, MAILSLOT_WAIT_FOREVER, NULL); - - if (m_mailslot != INVALID_HANDLE_VALUE) - { - //m_thread = ::CreateThread(NULL, 0, &StaticThreadProc, this, 0, &thread_id); - m_thread = (HANDLE)_beginthreadex(NULL, 0, &StaticThreadProc, this, 0, NULL); - if (m_thread == NULL) - { - // Failed - ATLTRACE("beginthreadex failed: %d\n", errno); - ::CloseHandle(m_mailslot); - m_mailslot = INVALID_HANDLE_VALUE; - return false; - } - } - else - { - return false; - } - - return true; -} - -void ServerEvents::Stop() -{ - ATLASSERT(m_mailslot != INVALID_HANDLE_VALUE); - ATLASSERT(m_thread != INVALID_HANDLE_VALUE); - - // Force the thread to give up. This could be done with a separate event - // and overlapped IO but this is cheap. - CloseHandle(m_mailslot); - m_mailslot = INVALID_HANDLE_VALUE; - - // Wait for it to finish. - WaitForSingleObject(m_thread, INFINITE); - CloseHandle(m_thread); - m_thread = INVALID_HANDLE_VALUE; -} - -//DWORD ServerEvents::StaticThreadProc(LPVOID param) -unsigned ServerEvents::StaticThreadProc(void *param) -{ - return reinterpret_cast(param)->ThreadProc(); -} - -DWORD ServerEvents::ThreadProc() -{ - const size_t BUFFER_SIZE = 65536; - void *buffer = operator new(BUFFER_SIZE); - - bool finished = false; - while (!finished) - { - DWORD bytes_read; - if (ReadFile(m_mailslot, buffer, BUFFER_SIZE, &bytes_read, NULL)) - { - TCHAR *b = (TCHAR *)buffer; - b[bytes_read/sizeof(TCHAR)] = 0; - ATLTRACE("%ls\n", b); - - OnEvent(buffer, bytes_read); - } - else - { - ATLTRACE("Read failed: error %d\n", GetLastError()); - finished = true; - } - } - return 0; -} - -void ServerEvents::OnEvent(const void *buffer, size_t bytes_received) -{ - const BYTE *received = reinterpret_cast(buffer); - - if (bytes_received >= 12) - { - UINT32 packet_size = received[0] | (received[1] << 8) | (received[2] << 16) | (received[3] << 24); - UINT32 id = received[4] | (received[5] << 8) | (received[6] << 16) | (received[7] << 24); - UINT32 intval = received[8] | (received[9] << 8) | (received[10] << 16) | (received[11] << 24); - - int string_length = static_cast(bytes_received) - 12; - - if ((packet_size < bytes_received) && (packet_size >= 12)) - string_length = packet_size - 12; - - CString str; - if (string_length > 0) - { -#ifdef UNICODE - // It might be less that string_length long after conversion but it shouldn't be more unless - // our codepage is extremely weird. - - str.ReleaseBuffer(MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, reinterpret_cast(received + 12), - string_length, str.GetBufferSetLength(string_length), string_length)); -#else - SafeStringCopy(str.GetBufferSetLength(string_length), received + 12, string_length); -#endif - str.ReleaseBuffer(string_length); - } - - m_obs->OnServerEvent(id, intval, str); - } -} \ No newline at end of file diff --git a/win32/FireflyShell/ServerEvents.h b/win32/FireflyShell/ServerEvents.h deleted file mode 100644 index ad369ba4..00000000 --- a/win32/FireflyShell/ServerEvents.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#ifndef SERVEREVENTS_H -#define SERVEREVENTS_H - -class ServerEvents -{ -public: - /// Note that the observer is called on the wrong thread. - class Observer - { - public: - virtual void OnServerEvent(UINT32 id, UINT32 intval, const CString &str) = 0; - }; - -private: - - HANDLE m_thread; - HANDLE m_mailslot; - Observer *m_obs; - - static unsigned __stdcall StaticThreadProc(void *); - DWORD ThreadProc(); - - void OnEvent(const void *buffer, size_t length); - -public: - ServerEvents(Observer *obs); - ~ServerEvents(); - - void SetObserver(Observer *obs) - { - ATLASSERT(m_obs == NULL); - m_obs = obs; - } - - bool Start(); - void Stop(); -}; - -#endif // SERVICE \ No newline at end of file diff --git a/win32/FireflyShell/ServiceControl.cpp b/win32/FireflyShell/ServiceControl.cpp deleted file mode 100644 index c2469925..00000000 --- a/win32/FireflyShell/ServiceControl.cpp +++ /dev/null @@ -1,250 +0,0 @@ -/* -*(C) 2006 Roku LLC -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License Version 2 as published -* by the Free Software Foundation. -* -* 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. -* -* Please read README.txt in the same directory as this source file for -* further license information. -*/ - -#include "stdafx.h" -#include "ServiceControl.h" -#include "DosPath.h" - -bool Service::ExecHelper(const TCHAR *szAction) { - SHELLEXECUTEINFO si; - ZeroMemory(&si,sizeof(si)); - - si.cbSize = sizeof(si); - si.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS; - si.hwnd = NULL; - si.lpVerb = _T("open"); - - CDosPath path = CDosPath::AppPath(); - CString strPath = path.GetPathOnly(); - si.lpDirectory = static_cast(strPath); - - CDosPath filename = CDosPath(_T("svcctrl.exe")); - filename |= path; - CString strFilename = filename.GetPath(); - - si.lpFile = static_cast(strFilename); - - CString strParams; - strParams.Format(_T("%s \"%s\""),szAction,m_name); - si.lpParameters = static_cast(strParams); - - si.nShow = 0; - - if(!ShellExecuteEx(&si)) - return false; - - WaitForSingleObject(si.hProcess, INFINITE); - - DWORD dwResult; - GetExitCodeProcess(si.hProcess,&dwResult); - - if(dwResult) - return false; - - return true; -} - -bool Service::Open(const TCHAR *name) -{ - Close(); - - const DWORD USER_ACCESS = SC_MANAGER_CONNECT | SC_MANAGER_ENUMERATE_SERVICE | STANDARD_RIGHTS_READ; - - DWORD dwDesiredAccess = USER_ACCESS; - - m_sc_manager = ::OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, dwDesiredAccess); - - if (!m_sc_manager) - m_can_control = false; - else - m_can_control = true; - - if (m_sc_manager) { - m_sc_service = ::OpenService(m_sc_manager, name, dwDesiredAccess); - if (m_sc_service) { - m_name = name; - return true; - } - } - - Close(); - return false; -} - -void Service::Close() { - if (m_sc_service) { - ::CloseServiceHandle(m_sc_service); - m_sc_service = NULL; - } - if (m_sc_manager) { - ::CloseServiceHandle(m_sc_manager); - m_sc_manager = NULL; - } -} - -bool Service::GetStatus(Status *status) const -{ - if (::QueryServiceStatus(m_sc_service, status)) - return true; - else - return false; -} - -bool Service::Start() -{ - if (ExecHelper(_T("start"))) - return true; - else - return false; -} - -bool Service::StartAndWait() -{ - if (Start()) - { - Status status; - return WaitPending(&status, SERVICE_START_PENDING); - } - else - return false; -} - -bool Service::Stop() -{ - Status status; - if (ExecHelper(_T("stop"))) - return true; - else - return false; -} - -bool Service::StopAndWait() -{ - Status status; - if (Stop()) - return WaitPending(&status, SERVICE_STOP_PENDING); - else - return false; -} - -bool Service::WaitPending(Status *status, DWORD existing_state) -{ - ATLTRACE(_T("Enter Service::WaitPending\n")); - if (GetStatus(status)) - { - DWORD dwStartTickCount = GetTickCount(); - DWORD dwOldCheckPoint = status->dwCheckPoint; - - while (status->dwCurrentState == existing_state) - { - ATLTRACE(_T("Service::WaitPending in loop\n")); - DWORD dwWaitTime = status->dwWaitHint / 10; - if (dwWaitTime < 1000) - dwWaitTime = 1000; - else if (dwWaitTime > 10000) - dwWaitTime = 10000; - - ATLTRACE(_T("Sleeping\n")); - ::Sleep(dwWaitTime); - - if (!GetStatus(status)) - { - ATLTRACE(_T("Service::WaitPending - Failed to get status\n")); - return false; - } - - // If we haven't changed state yet then check to see that the - // service is actually making progress. - if (status->dwCurrentState == existing_state) - { - if (status->dwCheckPoint != dwOldCheckPoint) - { - // The service is making progress - dwStartTickCount = GetTickCount(); - dwOldCheckPoint = status->dwCheckPoint; - } - else if (GetTickCount() - dwStartTickCount > status->dwWaitHint) - { - ATLTRACE(_T("Service::WaitPending - No progress\n")); - /// Hmm. No progress - return false; - } - } - } - } - ATLTRACE(_T("Service::WaitPending success\n")); - return true; -} - -CString Service::GetBinaryPath() const -{ - CString path; - - DWORD bytes_required; - ::QueryServiceConfig(m_sc_service, NULL, 0, &bytes_required); - if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) - { - void *buffer = operator new(bytes_required); - LPQUERY_SERVICE_CONFIG config = reinterpret_cast(buffer); - - if (::QueryServiceConfig(m_sc_service, config, bytes_required, &bytes_required)) - { - path = config->lpBinaryPathName; - } - - delete buffer; - } - return path; -} - -DWORD Service::GetStartup() const -{ - DWORD result = 0xffffffff; - const size_t BUFFER_SIZE = 8192; - void *buffer = operator new(BUFFER_SIZE); - LPQUERY_SERVICE_CONFIG config = reinterpret_cast(buffer); - - DWORD bytes_required; - if (::QueryServiceConfig(m_sc_service, config, BUFFER_SIZE, &bytes_required)) - result = config->dwStartType; - - delete buffer; - return result; -} - -bool Service::ConfigureStartup(DWORD startup) { - if(startup != GetStartup()) { // don't boost privs if we don't need to - if(startup == SERVICE_AUTO_START) { - return ExecHelper(_T("auto")); - } else { - return ExecHelper(_T("manual")); - } - } - return true; -} - -void ServiceStatusMonitor::Poll(Service *service) -{ - Service::Status new_status; - if (service->GetStatus(&new_status)) - { - if (!m_service_status.IsValid() || (m_service_status != new_status)) - { - FireServiceStatus(m_service_status, new_status); - m_service_status = new_status; - } - } -} diff --git a/win32/FireflyShell/ServiceControl.h b/win32/FireflyShell/ServiceControl.h deleted file mode 100644 index 82798591..00000000 --- a/win32/FireflyShell/ServiceControl.h +++ /dev/null @@ -1,174 +0,0 @@ -/* -*(C) 2006 Roku LLC -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License Version 2 as published -* by the Free Software Foundation. -* -* 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. -* -* Please read README.txt in the same directory as this source file for -* further license information. -*/ - -#ifndef SERVICECONTROL_H -#define SERVICECONTROL_H - -class Service -{ - SC_HANDLE m_sc_manager; - SC_HANDLE m_sc_service; - bool m_can_control; - CString m_name; - -public: - - class Status : public SERVICE_STATUS - { - bool WaitPending(); - - public: - Status() - { - SERVICE_STATUS *clearable_this = this; - ZeroMemory(clearable_this, sizeof(SERVICE_STATUS)); - } - - bool operator==(const Status &r) const - { - const SERVICE_STATUS *lhs = this; - const SERVICE_STATUS *rhs = &r; - return memcmp(lhs, rhs, sizeof(SERVICE_STATUS)) == 0; - } - - bool operator!=(const Status &r) const - { - const SERVICE_STATUS *lhs = this; - const SERVICE_STATUS *rhs = &r; - return memcmp(lhs, rhs, sizeof(SERVICE_STATUS)) != 0; - } - - void AssertValid() const - { - // If we've been written then this shouldn't be zero. - ATLASSERT(dwCurrentState != 0); - } - - bool IsValid() const - { - return dwCurrentState != 0; - } - - bool IsRunning() const - { - AssertValid(); - return dwCurrentState == SERVICE_RUNNING; - } - - bool IsStopped() const - { - AssertValid(); - return dwCurrentState == SERVICE_STOPPED; - } - - bool IsPaused() const - { - AssertValid(); - return dwCurrentState == SERVICE_PAUSED; - } - - bool IsPending() const - { - AssertValid(); - switch (dwCurrentState) - { - case SERVICE_CONTINUE_PENDING: - case SERVICE_PAUSE_PENDING: - case SERVICE_START_PENDING: - case SERVICE_STOP_PENDING: - return true; - default: - return false; - } - } - }; - - Service() : m_sc_manager(NULL), m_sc_service(NULL), m_can_control(false) {} - ~Service() { Close(); } - - bool IsOpen() const - { - return m_sc_service != NULL; - } - bool Open(const TCHAR *name); - void Close(); - - bool GetStatus(Status *status) const; - - bool Start(); - bool StartAndWait(); - bool Stop(); - bool StopAndWait(); - bool WaitPending(Status *status, DWORD existing_state); - bool PollPending(Status *status, DWORD existing_state); - - bool CanControl() const - { - // For the time being - need to deal with running as a user that can't control. - return IsOpen() && m_can_control; - } - - CString GetBinaryPath() const; - - /// Pass SERVICE_AUTO_START, SERVICE_BOOT_START, SERVICE_DEMAND_START, - /// SERVICE_DISABLED or SERVICE_SYSTEM_START. - bool ConfigureStartup(DWORD dwStartup); - DWORD GetStartup() const; - -private: - bool ExecHelper(const TCHAR *szAction); -}; - -class ServiceStatusObserver -{ -public: - virtual void OnServiceStatus(Service::Status old_status, Service::Status new_status) = 0; -}; - -class ServiceStatusMonitor -{ - Service::Status m_service_status; - std::vector m_service_observers; - - void FireServiceStatus(Service::Status old_status, Service::Status new_status) - { - std::vector::iterator i = m_service_observers.begin(); - while (i != m_service_observers.end()) - { - (*i)->OnServiceStatus(old_status, new_status); - ++i; - } - } - -public: - void Poll(Service *service); - void Subscribe(ServiceStatusObserver *obs) - { - m_service_observers.push_back(obs); - } - - void Unsubscribe(ServiceStatusObserver *obs) - { - std::vector::iterator i = std::find(m_service_observers.begin(), m_service_observers.end(), obs); - ATLASSERT(i != m_service_observers.end()); - if (i != m_service_observers.end()) - { - m_service_observers.erase(i); - } - } - -}; -#endif // SERVICECONTROL_H diff --git a/win32/FireflyShell/VersionInfo.cpp b/win32/FireflyShell/VersionInfo.cpp deleted file mode 100644 index 52f81597..00000000 --- a/win32/FireflyShell/VersionInfo.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#include "stdafx.h" -#include "VersionInfo.h" - -bool VersionInfo::Open(const TCHAR *filename) -{ - Close(); - - DWORD useless; - m_size = GetFileVersionInfoSize(filename, &useless); - if (m_size) - { - m_buffer = operator new(m_size); - ::ZeroMemory(m_buffer, m_size); - if (GetFileVersionInfo(filename, 0, static_cast(m_size), m_buffer)) - { - return IdentifySubBlock(); - } - else - Close(); - } - return false; -} - -bool VersionInfo::IdentifySubBlock() -{ - m_subblock.Empty(); - WORD required_langid = LANGIDFROMLCID(GetUserDefaultLCID()); - - UINT cbTranslate; - struct LANGANDCODEPAGE - { - WORD wLanguage; - WORD wCodePage; - } *lpTranslate; - - - if (VerQueryValue(m_buffer, _T("\\VarFileInfo\\Translation"), - reinterpret_cast(&lpTranslate), - &cbTranslate)) - { - // Try and find the user's language, but if we can't then just use the - // first one in the file. - int lang_index = -1; - for(unsigned i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ ) - { - // If we have an exact match then great. - if (lpTranslate[i].wLanguage == required_langid) - { - lang_index = i; - break; - } - // Otherwise settle for a primary language match and keep looking - else if ((PRIMARYLANGID(lpTranslate[i].wLanguage) == PRIMARYLANGID(required_langid)) && (lang_index < 0)) - { - lang_index = i; - } - } - if (lang_index < 0) - { - ATLTRACE("Failed to find a matching language. Just using the first one.\n"); - lang_index = 0; - } - - m_subblock.Format(_T("\\StringFileInfo\\%04x%04x\\"), lpTranslate[lang_index].wLanguage, lpTranslate[lang_index].wCodePage); - return true; - } - return false; -} - -void VersionInfo::Close() -{ - if (m_buffer) - { - delete m_buffer; - m_buffer = NULL; - } -} - -CString VersionInfo::GetString(const TCHAR *name) const -{ - CString path = m_subblock + name; - - LPVOID buffer; - UINT cb; - if (VerQueryValue(m_buffer, const_cast(static_cast(path)), &buffer, &cb)) - { - return CString(static_cast(buffer), cb); - } - return CString(); -} - -//CString VersionInfo::GetStringFileVersion() -//{ -// VerQueryValue(m_buffer, -//} \ No newline at end of file diff --git a/win32/FireflyShell/VersionInfo.h b/win32/FireflyShell/VersionInfo.h deleted file mode 100644 index 222cf765..00000000 --- a/win32/FireflyShell/VersionInfo.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#ifndef VERSIONINFO_H -#define VERSIONINFO_H - -class VersionInfo -{ - size_t m_size; - void *m_buffer; - CString m_subblock; - - bool IdentifySubBlock(); - - CString GetString(const TCHAR *name) const; - -public: - VersionInfo() : m_size(0), m_buffer(NULL) {} - - bool Open(const TCHAR *filename); - void Close(); - - CString GetFileDescription() const - { - return GetString(_T("FileDescription")); - } - - CString GetFileVersion() const - { - return GetString(_T("FileVersion")); - } -}; -#endif // VERSIONINFO_H diff --git a/win32/FireflyShell/localizations/dutch/dutch.ini b/win32/FireflyShell/localizations/dutch/dutch.ini deleted file mode 100644 index bd1364b0..00000000 Binary files a/win32/FireflyShell/localizations/dutch/dutch.ini and /dev/null differ diff --git a/win32/FireflyShell/localizations/dutch/dutch.lws b/win32/FireflyShell/localizations/dutch/dutch.lws deleted file mode 100644 index fc01937c..00000000 Binary files a/win32/FireflyShell/localizations/dutch/dutch.lws and /dev/null differ diff --git a/win32/FireflyShell/localizations/french/french.ini b/win32/FireflyShell/localizations/french/french.ini deleted file mode 100644 index dda1118f..00000000 Binary files a/win32/FireflyShell/localizations/french/french.ini and /dev/null differ diff --git a/win32/FireflyShell/localizations/french/french.lws b/win32/FireflyShell/localizations/french/french.lws deleted file mode 100644 index c96b7792..00000000 Binary files a/win32/FireflyShell/localizations/french/french.lws and /dev/null differ diff --git a/win32/FireflyShell/localizations/german/german.ini b/win32/FireflyShell/localizations/german/german.ini deleted file mode 100644 index 0115d37f..00000000 Binary files a/win32/FireflyShell/localizations/german/german.ini and /dev/null differ diff --git a/win32/FireflyShell/localizations/german/german.lws b/win32/FireflyShell/localizations/german/german.lws deleted file mode 100644 index 862089bb..00000000 Binary files a/win32/FireflyShell/localizations/german/german.lws and /dev/null differ diff --git a/win32/FireflyShell/localizations/italian/italian.ini b/win32/FireflyShell/localizations/italian/italian.ini deleted file mode 100644 index 8279b3ed..00000000 Binary files a/win32/FireflyShell/localizations/italian/italian.ini and /dev/null differ diff --git a/win32/FireflyShell/localizations/italian/italian.lws b/win32/FireflyShell/localizations/italian/italian.lws deleted file mode 100644 index f65e9953..00000000 Binary files a/win32/FireflyShell/localizations/italian/italian.lws and /dev/null differ diff --git a/win32/FireflyShell/localizations/japanese/japanese.ini b/win32/FireflyShell/localizations/japanese/japanese.ini deleted file mode 100644 index 65a69d2b..00000000 Binary files a/win32/FireflyShell/localizations/japanese/japanese.ini and /dev/null differ diff --git a/win32/FireflyShell/localizations/japanese/japanese.lws b/win32/FireflyShell/localizations/japanese/japanese.lws deleted file mode 100644 index 7c0b1f30..00000000 Binary files a/win32/FireflyShell/localizations/japanese/japanese.lws and /dev/null differ diff --git a/win32/FireflyShell/localizations/swedish/swedish.ini b/win32/FireflyShell/localizations/swedish/swedish.ini deleted file mode 100644 index 06ebbdb5..00000000 Binary files a/win32/FireflyShell/localizations/swedish/swedish.ini and /dev/null differ diff --git a/win32/FireflyShell/localizations/swedish/swedish.lws b/win32/FireflyShell/localizations/swedish/swedish.lws deleted file mode 100644 index ec5f9b11..00000000 Binary files a/win32/FireflyShell/localizations/swedish/swedish.lws and /dev/null differ diff --git a/win32/FireflyShell/res/FireflyShell.ico b/win32/FireflyShell/res/FireflyShell.ico deleted file mode 100644 index eeb5a025..00000000 Binary files a/win32/FireflyShell/res/FireflyShell.ico and /dev/null differ diff --git a/win32/FireflyShell/res/ShellRunning.ico b/win32/FireflyShell/res/ShellRunning.ico deleted file mode 100644 index eeb5a025..00000000 Binary files a/win32/FireflyShell/res/ShellRunning.ico and /dev/null differ diff --git a/win32/FireflyShell/res/ShellStopped.ico b/win32/FireflyShell/res/ShellStopped.ico deleted file mode 100644 index aa20e518..00000000 Binary files a/win32/FireflyShell/res/ShellStopped.ico and /dev/null differ diff --git a/win32/FireflyShell/res/logo.bmp b/win32/FireflyShell/res/logo.bmp deleted file mode 100644 index 876b4338..00000000 Binary files a/win32/FireflyShell/res/logo.bmp and /dev/null differ diff --git a/win32/FireflyShell/resource.h b/win32/FireflyShell/resource.h deleted file mode 100644 index b32a4f1e..00000000 --- a/win32/FireflyShell/resource.h +++ /dev/null @@ -1,70 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by FireflyShell.rc -// -#define IDR_MAINFRAME 128 -#define IDS_SERVER_RUNNING 129 -#define IDS_SERVER_STOPPED 130 -#define IDS_SERVERSTARTFAIL 131 -#define IDS_SERVERSTOPFAIL 132 -#define IDS_SERVER_PENDING 133 -#define IDS_SERVER_START 134 -#define IDS_SERVER_STOP 135 -#define IDS_SCAN_START 136 -#define IDS_SCAN_STOP 137 -#define IDS_NOT_ADMIN 138 -#define IDS_QUERYSERVERRESTART 139 -#define IDS_VERSIONINFO_DESCRIPTION 140 -#define IDS_VERSIONINFO_VERSION 141 -#define IDS_VERSIONINFO_PATH 142 -#define IDS_FAILED_CONFIGURE_SERVICE 143 -#define IDS_FAILED_CONFIGURE_STARTUP 144 -#define IDS_LOG_NOLOG 145 -#define IDS_LOG_OPENFAILED 146 -#define IDD_PAGE_BASIC 201 -#define IDD_PAGE_ADVANCED 202 -#define IDD_PAGE_LOG 203 -#define IDD_PAGE_ABOUT 204 -#define IDI_SHELL_STOPPED 207 -#define IDB_LOGO 208 -#define IDC_SERVERNAME 1000 -#define IDC_PATH 1001 -#define IDC_BROWSE 1002 -#define IDI_SHELL_RUNNING 1003 -#define IDM_CONTEXT 1003 -#define IDC_LOG 1003 -#define ID_CONFIGURE 1004 -#define IDC_PROTECT 1004 -#define IDC_PASSWORD 1005 -#define IDC_PASSWORD_PROMPT 1006 -#define ID_EXIT 1007 -#define IDC_PORTSPIN 1007 -#define IDC_STARTSERVICE 1008 -#define IDC_SERVERPORT 1009 -#define IDC_STOPSERVICE 1010 -#define IDC_SERVERSTATE 1011 -#define IDC_AUTOSTART 1012 -#define IDC_WEBADMIN 1013 -#define IDC_WEBSITE 1014 -#define IDC_AUTOSTART2 1014 -#define IDC_AUTOSTART_ICON 1014 -#define IDC_VERSIONLIST 1015 -#define IDC_COPY 1016 -#define IDC_REFRESH 1018 -#define IDC_LOGO 1019 -#define IDC_FIREFLYLINK 1020 -#define IDC_FIREFLYLINK2 1021 -#define IDC_ROKULINK 1021 -#define IDI_SHIELD 1022 -#define ID_SHELLNOTIFY 4242 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 209 -#define _APS_NEXT_COMMAND_VALUE 32773 -#define _APS_NEXT_CONTROL_VALUE 1023 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/win32/FireflyShell/singleton.h b/win32/FireflyShell/singleton.h deleted file mode 100644 index bb6bcc25..00000000 --- a/win32/FireflyShell/singleton.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#ifndef SINGLETON_H -#define SINGLETON_H - -template -class Singleton -{ - static T *sm_instance; - -public: - Singleton() - { - T *instance = static_cast(this); - ATLASSERT(sm_instance == NULL); - sm_instance = instance; - } - - virtual ~Singleton() - { - ATLASSERT(sm_instance != NULL); - sm_instance = NULL; - } - - static T *GetInstance() - { - ATLASSERT(sm_instance != NULL); - return sm_instance; - } -}; - -template -T *Singleton::sm_instance; - -#endif // SINGLETON_H \ No newline at end of file diff --git a/win32/FireflyShell/stdafx.cpp b/win32/FireflyShell/stdafx.cpp deleted file mode 100644 index cfd0a5d3..00000000 --- a/win32/FireflyShell/stdafx.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#include "stdafx.h" - -#if (_ATL_VER < 0x0700) -#include -#endif //(_ATL_VER < 0x0700) diff --git a/win32/FireflyShell/stdafx.h b/win32/FireflyShell/stdafx.h deleted file mode 100644 index fd905143..00000000 --- a/win32/FireflyShell/stdafx.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - *(C) 2006 Roku LLC - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License Version 2 as published - * by the Free Software Foundation. - * - * 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. - * - * Please read README.txt in the same directory as this source file for - * further license information. - */ - -#pragma once - -// Change these values to use different versions -#define WINVER 0x0400 -#define _WIN32_WINNT 0x0600 -#define _WIN32_IE 0x0500 -#define _RICHEDIT_VER 0x0100 - -#define _UNICODE -#define UNICODE - -// Visual C++ 2005's new secure string operations and deprecation -#define USE_SECURE 0 -#if defined(_MSC_VER) -#if _MSC_VER >= 1400 -#undef USE_SECURE -#define USE_SECURE 1 -#define _CRT_SECURE_NO_DEPRECATE -#endif // _MSC_VER >= 1400 -#endif // defined(_MSC_VER) - -#include -#include - -extern CAppModule _Module; - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// WtsApi32.h is only in the latest platform SDK. Don't rely -// on everyone having it. -#if !defined(NOTIFY_FOR_THIS_SESSION) -#define NOTIFY_FOR_THIS_SESSION 0 -#endif - -#if _MSC_VER >= 1400 -#if defined _M_IX86 - #pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") -#elif defined _M_IA64 - #pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") -#elif defined _M_X64 - #pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") -#else - #pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") -#endif -#endif - -inline void SafeStringCopy(TCHAR *dest, const TCHAR *source, size_t len) -{ -#if USE_SECURE - _tcsncpy_s(dest, len, source, len); -#else - _tcsncpy(dest, source, len); - dest[len - 1] = 0; -#endif -} \ No newline at end of file diff --git a/win32/FireflyShell/version.h.templ b/win32/FireflyShell/version.h.templ deleted file mode 100644 index ea909e8f..00000000 --- a/win32/FireflyShell/version.h.templ +++ /dev/null @@ -1,13 +0,0 @@ -/* Version number of package */ -#define VERSION_MAJOR 1 -#define VERSION_MID 0 -#define VERSION_MINOR 0 -#define VERSION_BUILD $WCREV$ - -#define VERSION_LOCAL "$WCMODS? (LOCAL):$" -#define BUILD_DATE "$WCNOW$" -#define REPO_DATE "$WCDATE$" - -#define VERSION_STRIZE2(x) #x -#define VERSION_STRIZE(x) VERSION_STRIZE2(x) -#define VERSION_STRING VERSION_STRIZE(VERSION_MAJOR) "." VERSION_STRIZE(VERSION_MID) " svn-" VERSION_STRIZE(VERSION_BUILD) VERSION_LOCAL diff --git a/win32/FireflyShell/version.rc b/win32/FireflyShell/version.rc deleted file mode 100644 index 6e57b2ac..00000000 --- a/win32/FireflyShell/version.rc +++ /dev/null @@ -1,44 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// -// Version -// -#include "version.h" -#include "winver.h" - -#ifndef APSTUDIO_INVOKED - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_MAJOR, VERSION_MID, VERSION_MINOR, VERSION_BUILD - PRODUCTVERSION VERSION_MAJOR, VERSION_MID, VERSION_MINOR, VERSION_BUILD - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS_NT_WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "CompanyName", "Roku LLC" - VALUE "FileDescription", "FireflyShell" - VALUE "FileVersion", VERSION_STRING - VALUE "InternalName", "FireflyShell" - VALUE "LegalCopyright", "Copyright 2006 Roku LLC" - VALUE "OriginalFilename", "FireflyShell.exe" - VALUE "ProductName", "Firefly Media Server" - VALUE "ProductVersion", VERSION_STRING - VALUE "Comments", "Build date: " BUILD_DATE "\r\nRepository date: " REPO_DATE "\r\n" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif //APSTUDIO_INVOKED diff --git a/win32/config.h.templ b/win32/config.h.templ deleted file mode 100644 index 37d20d72..00000000 --- a/win32/config.h.templ +++ /dev/null @@ -1,160 +0,0 @@ -/* config.h. Generated by configure. */ -/* config.h.in. Generated from configure.in by autoheader. */ - -/* Define to 1 if you have the `atoll' function. */ -#define HAVE_ATOLL 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_FLAC_METADATA_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_GETOPT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_ID3TAG_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the `FLAC' library (-lFLAC). */ -/* #undef HAVE_LIBFLAC */ - -/* Define to 1 if you have the `id3tag' library (-lid3tag). */ -#define HAVE_LIBID3TAG 1 - -/* Define to 1 if you have the `ogg' library (-logg). */ -/* #undef HAVE_LIBOGG */ - -/* Define to 1 if you have the `sqlite' library (-lsqlite). */ -#define HAVE_LIBSQLITE 1 - -/* Define to 1 if you have the `sqlite3' library (-lsqlite3). */ -#define HAVE_LIBSQLITE3 1 - -/* Define to 1 if you have the `vorbis' library (-lvorbis). */ -/* #undef HAVE_LIBVORBIS */ - -/* Define to 1 if you have the `vorbisfile' library (-lvorbisfile). */ -/* #undef HAVE_LIBVORBISFILE */ - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_OGG_OGG_H */ - -/* Define to 1 if you have the `select' function. */ -#define HAVE_SELECT 1 - -/* Define to 1 if you have the `socket' function. */ -#define HAVE_SOCKET 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SQLITE3_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SQLITE_H 1 - -/* Define to 1 if you have the header file. */ -/* #define HAVE_STDINT_H 1 */ - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the `strcasestr' function. */ -/* #define HAVE_STRCASESTR 1 */ - -/* Define to 1 if you have the `strdup' function. */ -#define HAVE_STRDUP 1 - -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 - -/* Define to 1 if you have the header file. */ -/* #define HAVE_STRINGS_H 1 */ - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the `strsep' function. */ -#define HAVE_STRSEP 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYSLOG_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_FILIO_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_IOCTL_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #define HAVE_SYS_TIME_H 1 */ - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have that is POSIX.1 compatible. */ -/* #define HAVE_SYS_WAIT_H 1 */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_TAGLIB_TAG_C_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_TERMIO_H */ - -/* Define to 1 if you have the header file. */ -/* #define HAVE_UNISTD_H 1 */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_VORBIS_CODEC_H */ - -/* Name of package */ -#define PACKAGE "Firefly Media Server" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "" - -/* Define as the return type of signal handlers (`int' or `void'). */ -#define RETSIGTYPE void - -/* Define to 1 if the `setpgrp' function takes no argument. */ -/* #undef SETPGRP_VOID */ - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Define to 1 if you can safely include both and . */ -#define TIME_WITH_SYS_TIME 1 - -/* */ -#define HAVE_SQL - -#define HAVE_ICONV -#define ICONV_CONST const - - -/* Version number of package */ -#define VERSION "svn-$WCREV$" -#define BUILD_DATE "$WCNOW$" -#define REPO_DATE "$WCDATE$" - -#include "win32.h" diff --git a/win32/ff.ico b/win32/ff.ico deleted file mode 100644 index eeb5a025..00000000 Binary files a/win32/ff.ico and /dev/null differ diff --git a/win32/messages.mc b/win32/messages.mc deleted file mode 100644 index 3ef6e7e0..00000000 --- a/win32/messages.mc +++ /dev/null @@ -1,28 +0,0 @@ -;#ifndef __MESSAGES_H__ -;#define __MESSAGES_H__ -; -; -; // Eventlog messages? What's this rubbish? I'll just make a -; // single message so I can reduce the eventlog api to syslog(3). -; // Perhaps this isn't as win32ish as it could be. :) -; - -LanguageNames = - ( - English = 0x0409:Messages_ENU - ) - - -;//////////////////////////////////////// -;// Events -;// - -MessageId = +1 -SymbolicName = EVENT_MSG -Language = English -%1 -. - -; -;#endif //__MESSAGES_H__ -; \ No newline at end of file diff --git a/win32/mt-daapd-res.h b/win32/mt-daapd-res.h deleted file mode 100644 index d3ef9c3e..00000000 --- a/win32/mt-daapd-res.h +++ /dev/null @@ -1,17 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by mt-daapd.rc -// -#define IDI_APPICON 5 -#define IDI_ICON1 201 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 202 -#define _APS_NEXT_COMMAND_VALUE 32768 -#define _APS_NEXT_CONTROL_VALUE 201 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/win32/mt-daapd.rc.templ b/win32/mt-daapd.rc.templ deleted file mode 100644 index 825b8c8c..00000000 --- a/win32/mt-daapd.rc.templ +++ /dev/null @@ -1,110 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "mt-daapd-res.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "mt-daapd-res.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "#include ""res/Messages.rc""\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,$WCREV$ - PRODUCTVERSION 1,0,0,$WCREV$ - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "http://www.fireflymediaserver.org" - VALUE "CompanyName", "Ron Pedde" - VALUE "FileDescription", "Firefly Service" - VALUE "FileVersion", "1.0 svn-$WCREV$" - VALUE "InternalName", "firefly" - VALUE "LegalCopyright", "Copyright (C) 2006 Ron Pedde" - VALUE "OriginalFilename", "firefly.exe" - VALUE "ProductName", "Firefly Media Server" - VALUE "ProductVersion", "1.0 svn-$WCREV$" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APPICON ICON "ff.ico" -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -#include "res/Messages.rc" -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/win32/mt-daapd.sln b/win32/mt-daapd.sln deleted file mode 100644 index 3f24731a..00000000 --- a/win32/mt-daapd.sln +++ /dev/null @@ -1,97 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mt-daapd", "mt-daapd.vcproj", "{CB40C666-11D7-456B-B774-BCA42F675BB5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rsp", "rsp.vcproj", "{68CCEA19-503F-4894-8AE3-B1673FDEA920}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w32-event", "w32-event.vcproj", "{E60F90F1-A1E5-49D8-A565-B990CA4BA860}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssc-ffmpeg", "ssc-ffmpeg.vcproj", "{DA27D6F4-7E9F-40CA-AC5C-480DC81A1C56}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FireflyShell", "FireflyShell\FireflyShell.vcproj", "{ED38F171-854B-4EA3-B3A0-7681648969FC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssc-wma", "ssc-wma\ssc-wma.vcproj", "{C1EF5133-DFB3-4FEC-B999-3655DBB14785}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "out-daap", "out-daap\out-daap.vcproj", "{C1EF5133-DFB3-4FEC-B999-3655DBB14786}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FireflyShellFRA", "FireflyShell\FireflyShellFRA.vcproj", "{819028A4-ED43-4A51-9E32-DC8559ADEBB6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FireflyShellNLD", "FireflyShell\FireflyShellNLD.vcproj", "{5D6F19F6-6A71-4960-BFB3-BF545D02ACBD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FireflyShellDEU", "FireflyShell\FireflyShellDEU.vcproj", "{9B035724-EAD7-48C5-BBAF-91FFAA3CA55F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FireflyShellJPN", "FireflyShell\FireflyShellJPN.vcproj", "{59618041-38FA-4D80-B00B-113417259E6D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FireflyShellSWE", "FireflyShell\FireflyShellSWE.vcproj", "{D8109A27-5CB3-4888-B62A-F83BB3B1D41F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FireflyShellITA", "FireflyShell\FireflyShellITA.vcproj", "{E8F129E2-CABC-4FCD-9A9E-CDE338F4B1D0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "svcctrl", "svcctrl\svcctrl.vcproj", "{C49A74DC-C9A3-4562-9BA1-F903AADE87C2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {CB40C666-11D7-456B-B774-BCA42F675BB5}.Debug|Win32.ActiveCfg = Debug|Win32 - {CB40C666-11D7-456B-B774-BCA42F675BB5}.Debug|Win32.Build.0 = Debug|Win32 - {CB40C666-11D7-456B-B774-BCA42F675BB5}.Release|Win32.ActiveCfg = Release|Win32 - {CB40C666-11D7-456B-B774-BCA42F675BB5}.Release|Win32.Build.0 = Release|Win32 - {68CCEA19-503F-4894-8AE3-B1673FDEA920}.Debug|Win32.ActiveCfg = Debug|Win32 - {68CCEA19-503F-4894-8AE3-B1673FDEA920}.Debug|Win32.Build.0 = Debug|Win32 - {68CCEA19-503F-4894-8AE3-B1673FDEA920}.Release|Win32.ActiveCfg = Release|Win32 - {68CCEA19-503F-4894-8AE3-B1673FDEA920}.Release|Win32.Build.0 = Release|Win32 - {E60F90F1-A1E5-49D8-A565-B990CA4BA860}.Debug|Win32.ActiveCfg = Debug|Win32 - {E60F90F1-A1E5-49D8-A565-B990CA4BA860}.Debug|Win32.Build.0 = Debug|Win32 - {E60F90F1-A1E5-49D8-A565-B990CA4BA860}.Release|Win32.ActiveCfg = Release|Win32 - {E60F90F1-A1E5-49D8-A565-B990CA4BA860}.Release|Win32.Build.0 = Release|Win32 - {DA27D6F4-7E9F-40CA-AC5C-480DC81A1C56}.Debug|Win32.ActiveCfg = Debug|Win32 - {DA27D6F4-7E9F-40CA-AC5C-480DC81A1C56}.Debug|Win32.Build.0 = Debug|Win32 - {DA27D6F4-7E9F-40CA-AC5C-480DC81A1C56}.Release|Win32.ActiveCfg = Release|Win32 - {DA27D6F4-7E9F-40CA-AC5C-480DC81A1C56}.Release|Win32.Build.0 = Release|Win32 - {ED38F171-854B-4EA3-B3A0-7681648969FC}.Debug|Win32.ActiveCfg = Debug|Win32 - {ED38F171-854B-4EA3-B3A0-7681648969FC}.Debug|Win32.Build.0 = Debug|Win32 - {ED38F171-854B-4EA3-B3A0-7681648969FC}.Release|Win32.ActiveCfg = Release|Win32 - {ED38F171-854B-4EA3-B3A0-7681648969FC}.Release|Win32.Build.0 = Release|Win32 - {C1EF5133-DFB3-4FEC-B999-3655DBB14785}.Debug|Win32.ActiveCfg = Debug|Win32 - {C1EF5133-DFB3-4FEC-B999-3655DBB14785}.Debug|Win32.Build.0 = Debug|Win32 - {C1EF5133-DFB3-4FEC-B999-3655DBB14785}.Release|Win32.ActiveCfg = Release|Win32 - {C1EF5133-DFB3-4FEC-B999-3655DBB14785}.Release|Win32.Build.0 = Release|Win32 - {C1EF5133-DFB3-4FEC-B999-3655DBB14786}.Debug|Win32.ActiveCfg = Debug|Win32 - {C1EF5133-DFB3-4FEC-B999-3655DBB14786}.Debug|Win32.Build.0 = Debug|Win32 - {C1EF5133-DFB3-4FEC-B999-3655DBB14786}.Release|Win32.ActiveCfg = Release|Win32 - {C1EF5133-DFB3-4FEC-B999-3655DBB14786}.Release|Win32.Build.0 = Release|Win32 - {819028A4-ED43-4A51-9E32-DC8559ADEBB6}.Debug|Win32.ActiveCfg = Debug|Win32 - {819028A4-ED43-4A51-9E32-DC8559ADEBB6}.Debug|Win32.Build.0 = Debug|Win32 - {819028A4-ED43-4A51-9E32-DC8559ADEBB6}.Release|Win32.ActiveCfg = Release|Win32 - {819028A4-ED43-4A51-9E32-DC8559ADEBB6}.Release|Win32.Build.0 = Release|Win32 - {5D6F19F6-6A71-4960-BFB3-BF545D02ACBD}.Debug|Win32.ActiveCfg = Debug|Win32 - {5D6F19F6-6A71-4960-BFB3-BF545D02ACBD}.Debug|Win32.Build.0 = Debug|Win32 - {5D6F19F6-6A71-4960-BFB3-BF545D02ACBD}.Release|Win32.ActiveCfg = Release|Win32 - {5D6F19F6-6A71-4960-BFB3-BF545D02ACBD}.Release|Win32.Build.0 = Release|Win32 - {9B035724-EAD7-48C5-BBAF-91FFAA3CA55F}.Debug|Win32.ActiveCfg = Debug|Win32 - {9B035724-EAD7-48C5-BBAF-91FFAA3CA55F}.Debug|Win32.Build.0 = Debug|Win32 - {9B035724-EAD7-48C5-BBAF-91FFAA3CA55F}.Release|Win32.ActiveCfg = Release|Win32 - {9B035724-EAD7-48C5-BBAF-91FFAA3CA55F}.Release|Win32.Build.0 = Release|Win32 - {59618041-38FA-4D80-B00B-113417259E6D}.Debug|Win32.ActiveCfg = Debug|Win32 - {59618041-38FA-4D80-B00B-113417259E6D}.Debug|Win32.Build.0 = Debug|Win32 - {59618041-38FA-4D80-B00B-113417259E6D}.Release|Win32.ActiveCfg = Release|Win32 - {59618041-38FA-4D80-B00B-113417259E6D}.Release|Win32.Build.0 = Release|Win32 - {D8109A27-5CB3-4888-B62A-F83BB3B1D41F}.Debug|Win32.ActiveCfg = Debug|Win32 - {D8109A27-5CB3-4888-B62A-F83BB3B1D41F}.Debug|Win32.Build.0 = Debug|Win32 - {D8109A27-5CB3-4888-B62A-F83BB3B1D41F}.Release|Win32.ActiveCfg = Release|Win32 - {D8109A27-5CB3-4888-B62A-F83BB3B1D41F}.Release|Win32.Build.0 = Release|Win32 - {E8F129E2-CABC-4FCD-9A9E-CDE338F4B1D0}.Debug|Win32.ActiveCfg = Debug|Win32 - {E8F129E2-CABC-4FCD-9A9E-CDE338F4B1D0}.Debug|Win32.Build.0 = Debug|Win32 - {E8F129E2-CABC-4FCD-9A9E-CDE338F4B1D0}.Release|Win32.ActiveCfg = Release|Win32 - {E8F129E2-CABC-4FCD-9A9E-CDE338F4B1D0}.Release|Win32.Build.0 = Release|Win32 - {C49A74DC-C9A3-4562-9BA1-F903AADE87C2}.Debug|Win32.ActiveCfg = Debug|Win32 - {C49A74DC-C9A3-4562-9BA1-F903AADE87C2}.Debug|Win32.Build.0 = Debug|Win32 - {C49A74DC-C9A3-4562-9BA1-F903AADE87C2}.Release|Win32.ActiveCfg = Release|Win32 - {C49A74DC-C9A3-4562-9BA1-F903AADE87C2}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/win32/mt-daapd.vcproj b/win32/mt-daapd.vcproj deleted file mode 100644 index 7087f7ed..00000000 --- a/win32/mt-daapd.vcproj +++ /dev/null @@ -1,495 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/nsi/AccessControl.dll b/win32/nsi/AccessControl.dll deleted file mode 100644 index 0fe0c1e0..00000000 Binary files a/win32/nsi/AccessControl.dll and /dev/null differ diff --git a/win32/nsi/SimpleFC.dll b/win32/nsi/SimpleFC.dll deleted file mode 100644 index a9ad7b87..00000000 Binary files a/win32/nsi/SimpleFC.dll and /dev/null differ diff --git a/win32/nsi/firefly.log b/win32/nsi/firefly.log deleted file mode 100644 index c44c15fa..00000000 --- a/win32/nsi/firefly.log +++ /dev/null @@ -1 +0,0 @@ -# Firefly Log File diff --git a/win32/nsi/localizations/Dutch.nsh b/win32/nsi/localizations/Dutch.nsh deleted file mode 100644 index 53020f86..00000000 --- a/win32/nsi/localizations/Dutch.nsh +++ /dev/null @@ -1,29 +0,0 @@ -!define LANG "DUTCH" - -!insertmacro LANG_STRING PRODUCT_NAME "Firefly Media Server" - -; Install strings -!insertmacro LANG_STRING STRING_BONJOUR_ERROR "Bonjour voor Windows service niet gevonden. Installeer eerst Apple's Bonjour voor Windows." -!insertmacro LANG_STRING STRING_STOPPING_SERVICE "Service wordt gestopt..." -!insertmacro LANG_STRING STRING_WAITING_FOR_STOP "Wacht tot de service gestopt is ($9)" - -; Strings for the application install directory panel -!insertmacro LANG_STRING STRING_DESTFOLDER "Bestemmingsfolder" -!insertmacro LANG_STRING STRING_DESTDETAIL "Setup zal ${PRODUCT_NAME} installeren in de volgende folder.$\r$\n$\r$\nOm in een andere folder te installeren, klik Doorzoek en selecteer een andere folder. Klik Volgende om door te gaan." - -; Strings for the music path directory panel -!insertmacro LANG_STRING STRING_MUSICTITLE "Kies Muziek Locatie" -!insertmacro LANG_STRING STRING_MUSICHEADER "Kies folder met music om te delen." -!insertmacro LANG_STRING STRING_MUSICFOLDER "Muziek Folder" -!insertmacro LANG_STRING STRING_MUSICDETAIL "Setup zal de muziek in de folder$\r$\n$\r$\nOm in een andere folder te delen, klik Doorzoek en selecteer een andere folder. Klik Installeer om de installatie te starten." - -; These are for the startmenu shortcuts -!insertmacro LANG_BOTHSTRING STRING_WEBSITE "Website" -!insertmacro LANG_BOTHSTRING STRING_UNINSTALL "Deinstalleer" -!insertmacro LANG_BOTHSTRING STRING_DEBUG_MODE "Debug Modus" -!insertmacro LANG_BOTHSTRING STRING_FF_CONFIGURATION "Firefly Configuratie" -!insertmacro LANG_BOTHSTRING STRING_ADV_CONFIG "Advanceerde Configuratie" - -; Uninstall Strings -!insertmacro LANG_UNSTRING STRING_UNINSTALLED "$(^Name) was succesvol verwijderd van uw computer." -!insertmacro LANG_UNSTRING STRING_AREYOUSURE "Bent u zeker dat u $(^Name) wilt verwijderen en al zijn componenten?" diff --git a/win32/nsi/localizations/English.nsh b/win32/nsi/localizations/English.nsh deleted file mode 100644 index 25d61534..00000000 --- a/win32/nsi/localizations/English.nsh +++ /dev/null @@ -1,29 +0,0 @@ -!define LANG "ENGLISH" - -!insertmacro LANG_STRING PRODUCT_NAME "Firefly Media Server" - -; Install strings -!insertmacro LANG_STRING STRING_BONJOUR_ERROR "Bonjour for Windows service not found. Please install Apple's Bonjour for Windows." -!insertmacro LANG_STRING STRING_STOPPING_SERVICE "Stopping Service..." -!insertmacro LANG_STRING STRING_WAITING_FOR_STOP "Waiting for service stop ($9)" - -; Strings for the application install directory panel -!insertmacro LANG_STRING STRING_DESTFOLDER "Destination Folder" -!insertmacro LANG_STRING STRING_DESTDETAIL "Setup will install ${PRODUCT_NAME} in the following folder.$\r$\n$\r$\nTo install in a different folder, click Browse and select another folder. Click Next to continue." - -; Strings for the music path directory panel -!insertmacro LANG_STRING STRING_MUSICTITLE "Choose Music Location" -!insertmacro LANG_STRING STRING_MUSICHEADER "Choose the folder containing music to share." -!insertmacro LANG_STRING STRING_MUSICFOLDER "Music Folder" -!insertmacro LANG_STRING STRING_MUSICDETAIL "Setup will share the music in the following folder.$\r$\n$\r$\nTo share a different folder, click Browse and select another folder. Click Install to start the installation." - -; These are for the startmenu shortcuts -!insertmacro LANG_BOTHSTRING STRING_WEBSITE "Website" -!insertmacro LANG_BOTHSTRING STRING_UNINSTALL "Uninstall" -!insertmacro LANG_BOTHSTRING STRING_DEBUG_MODE "Debug Mode" -!insertmacro LANG_BOTHSTRING STRING_FF_CONFIGURATION "Firefly Configuration" -!insertmacro LANG_BOTHSTRING STRING_ADV_CONFIG "Advanced Configuration" - -; Uninstall Strings -!insertmacro LANG_UNSTRING STRING_UNINSTALLED "$(^Name) was successfully removed from your computer." -!insertmacro LANG_UNSTRING STRING_AREYOUSURE "Are you sure you want to completely remove $(^Name) and all of its components?" diff --git a/win32/nsi/localizations/French.nsh b/win32/nsi/localizations/French.nsh deleted file mode 100644 index 0b05b756..00000000 --- a/win32/nsi/localizations/French.nsh +++ /dev/null @@ -1,30 +0,0 @@ -!define LANG "FRENCH" - -!insertmacro LANG_STRING PRODUCT_NAME "Firefly Media Server" - -; Install strings -!insertmacro LANG_STRING STRING_BONJOUR_ERROR "Le service Bonjour pour Windows n'a pas t trouv. Veuillez installer le service Bonjour de Apple Pour Windows." -!insertmacro LANG_STRING STRING_STOPPING_SERVICE "Arrter le service..." -!insertmacro LANG_STRING STRING_WAITING_FOR_STOP "Attente de l'arrt du service ($9)" - -; Strings for the application install directory panel -!insertmacro LANG_STRING STRING_DESTFOLDER "Dossier de Destination" -!insertmacro LANG_STRING STRING_DESTDETAIL "Le programme d'installation va installer ${PRODUCT_NAME} dans le dossier suivant.$\r$\n$\r$\nPour l'installer dans un dossier diffrent, cliquez sur Parcourir et slectionner un autre dossier. Cliquez sur Suivant pour continuer." - -; Strings for the music path directory panel -!insertmacro LANG_STRING STRING_MUSICTITLE "Choisissez l'emplacement de la Musique" -!insertmacro LANG_STRING STRING_MUSICHEADER "Choisissez le dossier contenant la musique partager." -!insertmacro LANG_STRING STRING_MUSICFOLDER "Dossier de Musique" -!insertmacro LANG_STRING STRING_MUSICDETAIL "Le programme d'installation va partager la musique du dossier suivant.$\r$\n$\r$\nPour partager un dossier diffrent, cliquez sur Parcourir et slectionnez un autre dossier. Cliquez sur Installer pour dmarrer l'installation." - -; These are for the startmenu shortcuts -!insertmacro LANG_BOTHSTRING STRING_WEBSITE "Site Web" -!insertmacro LANG_BOTHSTRING STRING_UNINSTALL "Dsinstaller" -!insertmacro LANG_BOTHSTRING STRING_DEBUG_MODE "Mode Debug" -!insertmacro LANG_BOTHSTRING STRING_FF_CONFIGURATION "Configuration de Firefly" -!insertmacro LANG_BOTHSTRING STRING_ADV_CONFIG "Configuration Avance" - -; Uninstall Strings -!insertmacro LANG_UNSTRING STRING_UNINSTALLED "$(^Name) a t supprim avec succs de votre ordinateur." -!insertmacro LANG_UNSTRING STRING_AREYOUSURE "tes-vous sr de vouloir supprimer dfinitivement $(^Name) et tous ses composants?" - diff --git a/win32/nsi/localizations/German.nsh b/win32/nsi/localizations/German.nsh deleted file mode 100644 index 1d482186..00000000 --- a/win32/nsi/localizations/German.nsh +++ /dev/null @@ -1,29 +0,0 @@ -!define LANG "GERMAN" - -!insertmacro LANG_STRING PRODUCT_NAME "Firefly Media Server" - -; Install strings -!insertmacro LANG_STRING STRING_BONJOUR_ERROR "Der Bonjour-Dienst fr Windows konnte nicht gefunden werden. Bitte installieren Sie Apples Bonjour fr Windows." -!insertmacro LANG_STRING STRING_STOPPING_SERVICE "Beende Dienst..." -!insertmacro LANG_STRING STRING_WAITING_FOR_STOP "Warte, bis Dienst beendet ist ($9)" - -; Strings for the application install directory panel -!insertmacro LANG_STRING STRING_DESTFOLDER "Zielpfad" -!insertmacro LANG_STRING STRING_DESTDETAIL "Setup wird ${PRODUCT_NAME} in folgenden Ordner installieren:$\r$\n$\r$\nUm in einen anderen Ordner als den ausgewhlten zu installieren, klicken Sie Durchsuchen und whlen Sie einen anderen Ordner aus. Drcken Sie Weiter, um fortzufahren." - -; Strings for the music path directory panel -!insertmacro LANG_STRING STRING_MUSICTITLE "Whlen Sie den Pfad zu Ihrer Musiksammlung" -!insertmacro LANG_STRING STRING_MUSICHEADER "Whlen Sie den Pfad zu den Musikdateien, die Sie freigeben mchten." -!insertmacro LANG_STRING STRING_MUSICFOLDER "Musik-Ordner" -!insertmacro LANG_STRING STRING_MUSICDETAIL "Das Setup wird die Musik in folgenden Ordnern freigeben.$\r$\n$\r$\nUm in einen anderen Ordner als den ausgewhlten freizugeben, klicken Sie Durchsuchen und whlen Sie einen anderen Ordner aus. Drcken Sie Installieren um den Installationsvorgang zu beginnen." - -; These are for the startmenu shortcuts -!insertmacro LANG_BOTHSTRING STRING_WEBSITE "Website" -!insertmacro LANG_BOTHSTRING STRING_UNINSTALL "Deinstallieren" -!insertmacro LANG_BOTHSTRING STRING_DEBUG_MODE "Debug Modus" -!insertmacro LANG_BOTHSTRING STRING_FF_CONFIGURATION "Firefly Konfiguration" -!insertmacro LANG_BOTHSTRING STRING_ADV_CONFIG "Erweiterte Konfiguration" - -; Uninstall Strings -!insertmacro LANG_UNSTRING STRING_UNINSTALLED "$(^Name) wurde erfolgreich von Ihrem Computer entfernt." -!insertmacro LANG_UNSTRING STRING_AREYOUSURE "Sind Sie sicher, dass sie $(^Name) und damit alle Komponenten von Ihrem Computer entfernen wollen?" diff --git a/win32/nsi/localizations/Italian.nsh b/win32/nsi/localizations/Italian.nsh deleted file mode 100644 index d4a584db..00000000 --- a/win32/nsi/localizations/Italian.nsh +++ /dev/null @@ -1,30 +0,0 @@ -!define LANG "ITALIAN" - -!insertmacro LANG_STRING PRODUCT_NAME "Firefly Media Server" - -; Install strings -!insertmacro LANG_STRING STRING_BONJOUR_ERROR "Il servizio Bonjour per Windows non disponibile. Installare Apple Bonjour per Windows." -!insertmacro LANG_STRING STRING_STOPPING_SERVICE "Arresto del servizio in corso..." -!insertmacro LANG_STRING STRING_WAITING_FOR_STOP "Attesa per l'arresto del servizio ($9)" - -; Strings for the application install directory panel -!insertmacro LANG_STRING STRING_DESTFOLDER "Cartella di destinazione" -!insertmacro LANG_STRING STRING_DESTDETAIL "Setup installer ${PRODUCT_NAME} nella seguente cartella.$\r$\n$\r$\nPer installare in una cartella differente, fare click su Sfoglia e selezionare un'altra cartella. Fare click su Prossimo per continuare." - -; Strings for the music path directory panel -!insertmacro LANG_STRING STRING_MUSICTITLE "Scelta della libreria musicale" -!insertmacro LANG_STRING STRING_MUSICHEADER "Scegliere la cartella contenente la musica da condividere." -!insertmacro LANG_STRING STRING_MUSICFOLDER "Cartella con la musica" -!insertmacro LANG_STRING STRING_MUSICDETAIL "Firefly condivider la musica nella cartella seguente.$\r$\n$\r$\nPer condividere una cartella differente, fare click su Sfoglia e selezionare un'altra cartella. Fare click su Installa per iniziare." - -; These are for the startmenu shortcuts -!insertmacro LANG_BOTHSTRING STRING_WEBSITE "Sito web" -!insertmacro LANG_BOTHSTRING STRING_UNINSTALL "Disinstalla" -!insertmacro LANG_BOTHSTRING STRING_DEBUG_MODE "Modalit Debug" -!insertmacro LANG_BOTHSTRING STRING_FF_CONFIGURATION "Configurazione di Firefly" -!insertmacro LANG_BOTHSTRING STRING_ADV_CONFIG "Configurazione Avanzata" - -; Uninstall Strings -!insertmacro LANG_UNSTRING STRING_UNINSTALLED "$(^Name) stato rimosso dal tuo computer con successo." -!insertmacro LANG_UNSTRING STRING_AREYOUSURE "Sei sicuro di volere rimuovere completamente $(^Name) con tutti i relativi componenti?" - diff --git a/win32/nsi/localizations/Japanese.nsh b/win32/nsi/localizations/Japanese.nsh deleted file mode 100644 index 7332ced6..00000000 --- a/win32/nsi/localizations/Japanese.nsh +++ /dev/null @@ -1,29 +0,0 @@ -!define LANG "JAPANESE" - -!insertmacro LANG_STRING PRODUCT_NAME "Firefly Media Server" - -; Install strings -!insertmacro LANG_STRING STRING_BONJOUR_ERROR "WindowsBonjourT[rX‚܂BAppleЂWindowsBonjourCXg[ĂB" -!insertmacro LANG_STRING STRING_STOPPING_SERVICE "T[rX~..." -!insertmacro LANG_STRING STRING_WAITING_FOR_STOP "T[rX̒~ҋ@ ($9)" - -; Strings for the application install directory panel -!insertmacro LANG_STRING STRING_DESTFOLDER "CXg[tH_" -!insertmacro LANG_STRING STRING_DESTDETAIL "ZbgAbv ${PRODUCT_NAME} ̃tH_ɃCXg[܂B$\r$\n$\r$\ñtH_ɃCXg[ɂ́AuQƁv{^NbNāÃtH_IĂBɂ́Auցv{^NbNĂB" - -; Strings for the music path directory panel -!insertmacro LANG_STRING STRING_MUSICTITLE "~[WbN̏ꏊ̑I" -!insertmacro LANG_STRING STRING_MUSICHEADER "L~[WbNtH_IĂB" -!insertmacro LANG_STRING STRING_MUSICFOLDER "~[WbNtH_" -!insertmacro LANG_STRING STRING_MUSICDETAIL "ZbgAbṽ͎tH_ɂ~[WbNL܂B$\r$\n$\r$\ñtH_Lɂ́AuQƁv{^NbNāÃtH_IĂBCXg[Jnɂ́AuCXg[v{^NbNĂB" - -; These are for the startmenu shortcuts -!insertmacro LANG_BOTHSTRING STRING_WEBSITE "EFuTCg" -!insertmacro LANG_BOTHSTRING STRING_UNINSTALL "ACXg[" -!insertmacro LANG_BOTHSTRING STRING_DEBUG_MODE "fobO[h" -!insertmacro LANG_BOTHSTRING STRING_FF_CONFIGURATION "Fireflyݒ" -!insertmacro LANG_BOTHSTRING STRING_ADV_CONFIG "ڍׂ̐ݒ" - -; Uninstall Strings -!insertmacro LANG_UNSTRING STRING_UNINSTALLED "$(^Name)𐳏ɃACXg[邱Ƃł܂B" -!insertmacro LANG_UNSTRING STRING_AREYOUSURE "{$(^Name)SɃACXg[Ă낵łH" diff --git a/win32/nsi/localizations/Swedish.nsh b/win32/nsi/localizations/Swedish.nsh deleted file mode 100644 index 8e3208a0..00000000 --- a/win32/nsi/localizations/Swedish.nsh +++ /dev/null @@ -1,29 +0,0 @@ -!define LANG "SVENSKA" - -!insertmacro LANG_STRING PRODUCT_NAME "Firefly Media Server" - -; Install strings -!insertmacro LANG_STRING STRING_BONJOUR_ERROR "Bonjour fr Windows tjnsten kan inte hittas. Var vnlig installera Apple's Bonjour fr Windows." -!insertmacro LANG_STRING STRING_STOPPING_SERVICE "Stannar tjnsten..." -!insertmacro LANG_STRING STRING_WAITING_FOR_STOP "Vntar p att tjnsten ska stanna ($9)" - -; Strings for the application install directory panel -!insertmacro LANG_STRING STRING_DESTFOLDER "Destination" -!insertmacro LANG_STRING STRING_DESTDETAIL "Installations programmet kommer installera ${PRODUCT_NAME} i fljande mapp.$\r$\n$\r$\nFr att installera i en annan map, klicka Blddra och vlj en annan map. Klicka p Nsta fr att fortstta." - -; Strings for the music path directory panel -!insertmacro LANG_STRING STRING_MUSICTITLE "Vlj musik mapp" -!insertmacro LANG_STRING STRING_MUSICHEADER "Vlj mappen som innehller musik att dela ut." -!insertmacro LANG_STRING STRING_MUSICFOLDER "Musik Mapp" -!insertmacro LANG_STRING STRING_MUSICDETAIL "Installationen kommer dela ut musiken i fljande mapp.$\r$\n$\r$\nFr att dela ut en annan mapp, klicka Blddra och vlj en annan mapp. Klicka Installera fr att starta installationen." - -; These are for the startmenu shortcuts -!insertmacro LANG_BOTHSTRING STRING_WEBSITE "Websida" -!insertmacro LANG_BOTHSTRING STRING_UNINSTALL "Avinstallera" -!insertmacro LANG_BOTHSTRING STRING_DEBUG_MODE "Debug Lge" -!insertmacro LANG_BOTHSTRING STRING_FF_CONFIGURATION "Firefly Konfiguration" -!insertmacro LANG_BOTHSTRING STRING_ADV_CONFIG "Avancerad Konfiguration" - -; Uninstall Strings -!insertmacro LANG_UNSTRING STRING_UNINSTALLED "$(^Name) r fullstndigt avinstallerad frn din dator." -!insertmacro LANG_UNSTRING STRING_AREYOUSURE "r du sker p att du vill avinstallera $(^Name) och alla dess komponenter?" diff --git a/win32/nsi/manifest.xml b/win32/nsi/manifest.xml deleted file mode 100644 index daceea20..00000000 --- a/win32/nsi/manifest.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - diff --git a/win32/nsi/mapping.ini b/win32/nsi/mapping.ini deleted file mode 100644 index ec613989..00000000 --- a/win32/nsi/mapping.ini +++ /dev/null @@ -1,3 +0,0 @@ -# Map drive letters to unc paths so that the service -# can better locate user paths -[mapping] diff --git a/win32/nsi/mt-daapd-example.conf b/win32/nsi/mt-daapd-example.conf deleted file mode 100644 index 0879a566..00000000 --- a/win32/nsi/mt-daapd-example.conf +++ /dev/null @@ -1,298 +0,0 @@ -# This is the Firefly Media Server config file. -# -# Note that any changes made to this file will require the server to be -# shut down and restarted -# -# - - -[general] -# -# web_root (required) -# -# Location of the admin web pages. -# -# If you installed from .RPM, .deb, or tarball with --prefix=/usr, then -# this is correct. -# -# If you installed from tarball without --prefix=/usr, then the correct -# path is probably /usr/local/share/mt-daapd/admin-root. -# - -web_root=admin-root - -# -# port (required) -# -# What port to listen on. It is possible to use a different -# port, but this is the default iTunes port -# - -port=9999 - -# -# admin_pw (optional) -# -# This is the password to the administrative pages -# -# If it is blank, then no password is required from localhost, -# but nobody can connect from an outside machine (for admin -# pages). -# -# If it is set, then passwords are required for admin pages -# from both localhost and external hosts -# - -# admin_pw = - - -# -# db_type (required) -# -# This is what kind of backend database to store the song -# info in. Valid choices are "sqlite" and "sqlite3". -# -# sqlite seems to be more stable. - -db_type=sqlite3 - -# -# db_parms -# -# This is any extra information the db needs to connect. -# in the case of sqlite and sqlite3, this is the name -# of the directory to store the database in -# -# If you installed from RPM or .deb, this path likely already -# exists. If not, then you must create it. The directory itself -# must be writable by the "runas" user. -# - -db_parms=. - -# -# mp3_dir (required) -# -# Location of the mp3 files to share. Note that because the -# files are stored in the database by inode, these must be -# in the same physical filesystem. -# - -mp3_dir=c:\mp3 - -# -# servername (required) -# -# This is both the name of the server as advertised -# via rendezvous, and the name of the database -# exported via DAAP. Also know as "What shows up in iTunes". -# - -servername=Firefly Media Server - -# -# runas (required) -# -# This is the user to drop privs to if running as -# root. If mt-daapd is not started as root, this -# configuration option is ignored. Notice that this -# must be specified whether the server is running -# as root or not. -# -# This is a leftover from the port from unix -- it's -# not used on windows, but still hanging around, like -# an appendix. -# - -runas=nobody - -# -# password (optional) -# -# This is the password required to listen to MP3 files -# i.e. the password that iTunes prompts for -# - -#password=mp3 - -# -# extensions (optional) -# -# These are the file extensions that the daap server will -# try to index and serve. By default, it only indexes and -# serves .mp3 files. It can also server .m4a and .m4p files, -# and just about any other files, really. Unfortunately, while -# it can *attempt* to serve other files (.ogg?), iTunes won't -# play them. Perhaps this would be useful on Linux with -# Rhythmbox, once it understands daap. (hurry up!) -# -# Failing that, one can use server-side conversion to transcode -# non-standard (.ogg, .flac) music to wav on the server side. -# See the ssc_* options below. -# - -extensions=.mp3,.m4a,.m4p,.wma,.flac,.ogg - -# -# ssc_codectypes (optional) -# -# List of codectypes for files that the daap server should -# perform internal format conversion and present to clients -# as WAV files. The file extensions that these codectypes correspond -# to must also be present in 'extensions' -# configuration value, or files are not probed in the first -# place. -# -# Valid codectypes: -# -# mp4a - for AAC (.aac, .mp4, .m4a, .m4p) -# mpeg - for mp3 -# wav - for wav -# wma - for wma -# ogg - for ogg -# flac - for flac (.flac, .fla) -# mpc for musepack (.mpc, .mpp, .mp+) -# alac for alac (.m4a) -# - -#ssc_codectypes ogg,flac,alac - -# -# ssc_prog (optional) -# -# Program that is used in server side format conversion. -# Program must accept following command line syntax: -# ssc_prog filename offset length ... -# Parameter filename is the real name of the file that is -# to be converted and streamed, offset is number of bytes -# that are skipped from the beginning of the _output_ file -# before streaming is started, length is length of the song -# in seconds (or zero). All other possible arguments must -# be ignored. The resulting wav file (or the rest of -# the file after initial seek) is written to the standard -# output by the ssc_prog program. This is typically -# a script that is a front end for different conversion tools -# handling different formats. -# - -#ssc_prog /etc/mt-daapd-ssc-script - -# -# logfile (optional) -# -# This is the file to log to. If this is not configured, -# then it will log to the syslog. -# -# Not that the -d switch will control the log verbosity. -# By default, it runs at log level 1. Log level 9 will churn -# out scads of useless debugging information. Values in between -# will vary the amount of logging you get. -# - -#logfile /var/log/mt-daapd.log - -# -# art_filename (optional) -# -# There is experimental support thanks to Hiren Joshi -# (hirenj@mooh.org) for dynamically adding art to the id3v2 -# header as it is streamed (!!). If you were using a music system -# like zina or andromeda, for example, with cover art called -# "_folderOpenImage.jpg", you could use the parameter -# art_file _folderOpenImage.jpg and if the file _folderOpenImage.jpg -# was located in the same folder as the .mp3 file, it would appear -# in iTunes. Cool, eh? -# - -#art_filename _folderOpenImage.jpg - -# -# rescan_interval -# -# How often to check the file system (in sec) to see if any mp3 files -# have been added or removed. -# -# if not specified, the default is 0, which disables background scanning. -# -# If background rescanning is disabled, a scan can still be forced from the -# "status" page of the administrative web interface -# -# Setting a rescan_interval lower than the time it takes to rescan -# won't hurt anything, it will just waste CPU, and make connect times -# to the daap server longer. -# -# - -rescan_interval = 600 - -# always_scan -# -# The default behavior is not not do background rescans of the -# filesystem unless there are clients connected. The thought is to -# allow the drives to spin down unless they are in use. This might be -# of more importance in IDE drives that aren't designed to be run -# 24x7. Forcing a scan through the web interface will always work -# though, even if no users are connected. - -always_scan = 1 - -# -# process_m3u -# -# By default m3u processing is turned off, since most m3u files -# sitting around in peoples mp3 directories have bad paths, and -# I hear about it. :) -# -# If you are sure your m3u files have good paths (i.e. unixly pathed, -# with relative paths relative to the directory the m3u is in), then -# you can turn on m3u processing by setting this directive to 1. -# -# I'm not sure "unixly" is a word, but you get the idea. -# - -process_m3u = 1 - -# -# scan_type -# -# -# This sets how aggressively mp3 files should be scanned to determine -# file length. There are three values: -# -# 0 (Normal) -# Just scan the first mp3 frame to try and calculate size. This will -# be accurate for most files, but VBR files without an Xing tag will -# probably have wildly inaccurate file times. This is the default. -# -# 1 (Aggressive) -# This checks the bitrates of 10 frames in the middle of the song. -# This will still be inaccurate for VBR files without an Xing tag, -# but they probably won't be quite as inaccurate as 0. This takes -# more time, obviously, although the time hit will only happen the -# first time you scan a particular file. -# -# 2 (Painfully aggressive) -# This walks through the entire song, counting the number of frames. -# This should result in accurate song times, but will take the most -# time. Again, this will only have to be incurred the first time -# the file is indexed. -# - -scan_type=2 - - -# compress 0 - -# -# Truncate -# -# should the server truncate the log files on startup. -# Defaults to zero -truncate = 1 - -[plugins] -plugin_dir = plugins -plugins = rsp.dll,w32-event.dll - - - diff --git a/win32/nsi/mt-daapd.nsi.templ b/win32/nsi/mt-daapd.nsi.templ deleted file mode 100644 index 9a9d1c3b..00000000 --- a/win32/nsi/mt-daapd.nsi.templ +++ /dev/null @@ -1,662 +0,0 @@ -; $Id$ -; Script generated by the HM NIS Edit Script Wizard. - -; Update for Vista -RequestExecutionLevel admin - -; HM NIS Edit Wizard helper defines -!define PRODUCT_NAME "Firefly Media Server" -!define PRODUCT_SERVICE "Firefly Media Server" -!define /date DATEVER "%Y%m%d" -!define PRODUCT_VERSION "svn-$WCREV$" -!define PRODUCT_PUBLISHER "Ron Pedde" -!define PRODUCT_WEB_SITE "http://www.fireflymediaserver.org" -!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\firefly.exe" -!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" -!define PRODUCT_UNINST_ROOT_KEY "HKLM" - -!define PROJROOT "..\..\.." - -!define MTDROOT "..\.." -!define MTD_SOURCE "${MTDROOT}\win32\Release" -!define CONFIG_SOURCE "${MTDROOT}\win32\FireflyShell\Release" -!define DLL_SOURCE "${PROJROOT}\win32\dll" -!define ADMIN_ROOT "${MTDROOT}\admin-root" -!define REDIST_SOURCE "${PROJROOT}\win32\redist" - -!include "FileFunc.nsh" -!insertmacro GetParameters -!insertmacro GetOptionsS - -; MUI 1.67 compatible ------ -!include "MUI.nsh" - -; MUI Settings -;!define MUI_WELCOMEFINISHPAGE_BITMAP "ffsetup4.bmp" -!define MUI_ABORTWARNING -!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" -!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" - -; Welcome page -!insertmacro MUI_PAGE_WELCOME -; License page -!define MUI_PAGE_CUSTOMFUNCTION_LEAVE LicensePost -!insertmacro MUI_PAGE_LICENSE "${ADMIN_ROOT}\gpl-license.txt" -; Directory page -!define MUI_PAGE_CUSTOMFUNCTION_PRE DirectoryPre -!define MUI_PAGE_CUSTOMFUNCTION_SHOW DirectoryShow -!define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryLeave -!insertmacro MUI_PAGE_DIRECTORY - -; Music Directory Page -!define MUI_PAGE_CUSTOMFUNCTION_PRE DirectoryPre -!define MUI_PAGE_CUSTOMFUNCTION_SHOW DirectoryShow -!define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryLeave -!insertmacro MUI_PAGE_DIRECTORY - -; Instfiles page -!insertmacro MUI_PAGE_INSTFILES -; Finish page -!insertmacro MUI_PAGE_FINISH - -; Uninstaller pages -!insertmacro MUI_UNPAGE_INSTFILES - -; MUI end ------ -!macro LANG_LOAD LANGLOAD - !insertmacro MUI_LANGUAGE "${LANGLOAD}" -; !verbose - !include "localizations\${LANGLOAD}.nsh" -; !verbose on - !undef LANG -!macroend - -!macro LANG_STRING NAME VALUE - LangString "${NAME}" "${LANG_${LANG}}" "${VALUE}" -!macroend - -!macro LANG_UNSTRING NAME VALUE - !insertmacro LANG_STRING "un.${NAME}" "${VALUE}" -!macroend - -!macro LANG_BOTHSTRING NAME VALUE - !insertmacro LANG_STRING "${NAME}" "${VALUE}" - !insertmacro LANG_UNSTRING "${NAME}" "${VALUE}" -!macroend - - -!insertmacro LANG_LOAD "English" -!insertmacro LANG_LOAD "French" -!insertmacro LANG_LOAD "Dutch" -!insertmacro LANG_LOAD "German" -!insertmacro LANG_LOAD "Japanese" -!insertmacro LANG_LOAD "Swedish" -!insertmacro LANG_LOAD "Italian" - -Name "${PRODUCT_NAME}" -Icon "..\ff.ico" -UninstallIcon "..\ff.ico" -OutFile "${PRODUCT_NAME} (${PRODUCT_VERSION}).exe" -InstallDir "$PROGRAMFILES\${PRODUCT_NAME}\" -InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" -ShowInstDetails show -ShowUnInstDetails show - -Section -Pre - !include WinMessages.nsh - FindWindow $0 "" "FireflyShellNotifyIconHidden" - SendMessage $0 ${WM_CLOSE} 0 0 - - nsSCM::QueryStatus "Bonjour Service" - Pop $0 - Pop $1 - - StrCmp $0 "success" lbl_got_bonjour - MessageBox MB_OK "$(STRING_BONJOUR_ERROR)" - Quit - - lbl_got_bonjour: - - IntOp $9 0 + 0 - - nsSCM::QueryStatus "${PRODUCT_NAME}" - Pop $0 - Pop $1 - - StrCmp $0 "success" lbl_stop_service - goto lbl_continue - - lbl_stop_service: - DetailPrint "$(STRING_STOPPING_SERVICE)" - nsSCM::Stop "$(PRODUCT_NAME)" - - lbl_wait_stop: - Sleep 1000 - nsSCM::QueryStatus "$(PRODUCT_NAME)" - Pop $0 - Pop $1 - -; DetailPrint $0 - StrCmp $0 "success" lbl_check_status - goto lbl_continue - - lbl_check_status: - IntCmp $1 1 lbl_continue lbl_wait_stop lbl_wait_stop - - lbl_continue: - ; should really loop until service stops... - DetailPrint "$(STRING_WAITING_FOR_STOP)" - - IntOp $9 $9 + 1 - IntCmp $9 10 +1 +1 lbl_done_pre - - Sleep 1500 - Delete $2\firefly.exe - IfErrors lbl_continue - - lbl_done_pre: - -SectionEnd - -Section "MainSection" SEC01 - SetOutPath "$2" - - IfFileExists "$SMPROGRAMS\${PRODUCT_NAME}" HasProgramItems - goto NoProgramItems - -HasProgramItems: - Delete "$SMPROGRAMS\${PRODUCT_NAME}\*" - -NoProgramItems: - SetOverwrite on - File "${MTD_SOURCE}\firefly.exe" - File "${CONFIG_SOURCE}\FireflyShell.exe" - Delete "$2\FireflyShell.exe.manifest" - File "${CONFIG_SOURCE}\FireflyShell-0c.dll" - File "${CONFIG_SOURCE}\FireflyShell-07.dll" - File "${CONFIG_SOURCE}\FireflyShell-13.dll" - File "${CONFIG_SOURCE}\FireflyShell-1d.dll" - File "${CONFIG_SOURCE}\FireflyShell-11.dll" - File "${CONFIG_SOURCE}\FireflyShell-10.dll" - File "${CONFIG_SOURCE}\svcctrl.exe" - File "${DLL_SOURCE}\gnu_regex.dll" - File "${DLL_SOURCE}\pthreadVC2.dll" - File "${DLL_SOURCE}\sqlite.dll" - File "${DLL_SOURCE}\sqlite3.dll" - File "${DLL_SOURCE}\zlib1.dll" - File "${DLL_SOURCE}\avutil.dll" - File "${DLL_SOURCE}\avcodec.dll" - File "${DLL_SOURCE}\avformat.dll" - File "${DLL_SOURCE}\libFLAC.dll" - File "${DLL_SOURCE}\iconv.dll" - File "${DLL_SOURCE}\charset.dll" - - SetOutPath "$2\plugins" - File "${MTD_SOURCE}\rsp.dll" - File "${MTD_SOURCE}\out-daap.dll" - File "${MTD_SOURCE}\w32-event.dll" - File "${MTD_SOURCE}\ssc-ffmpeg.dll" - File "${MTD_SOURCE}\ssc-wma.dll" - - SetOutPath "$2\admin-root" - File "${ADMIN_ROOT}\thanks.html" - File "${ADMIN_ROOT}\about.html" - File "${ADMIN_ROOT}\status.js" - File "${ADMIN_ROOT}\smartpopup.html" - File "${ADMIN_ROOT}\smart.js" - File "${ADMIN_ROOT}\smart.html" - File "${ADMIN_ROOT}\required.gif" - File "${ADMIN_ROOT}\playlist.js" - File "${ADMIN_ROOT}\playlist.html" - File "${ADMIN_ROOT}\ff_logo_sm.gif" - File "${ADMIN_ROOT}\firefly.js" - File "${ADMIN_ROOT}\firefly.css" - File "${ADMIN_ROOT}\index.css" - File "${ADMIN_ROOT}\config.css" - File "${ADMIN_ROOT}\linkTransparent.gif" - File "${ADMIN_ROOT}\linkOpaque.gif" - File "${ADMIN_ROOT}\index.html" - File "${ADMIN_ROOT}\hdr.html" - File "${ADMIN_ROOT}\gpl-license.txt" - File "${ADMIN_ROOT}\gpl-license.html" - File "${ADMIN_ROOT}\ftr.html" - File "${ADMIN_ROOT}\feedback.html" - File "${ADMIN_ROOT}\favicon.ico" - File "${ADMIN_ROOT}\DAAPApplet-0.1.jar" - File "${ADMIN_ROOT}\CREDITS" - File "${ADMIN_ROOT}\config-update.html" - File "${ADMIN_ROOT}\config.html" - File "${ADMIN_ROOT}\config.js" - File "${ADMIN_ROOT}\config.xml" - File "${ADMIN_ROOT}\zlib-license.txt" - File "${ADMIN_ROOT}\zlib-license.html" - File "${ADMIN_ROOT}\xiph-license.txt" - File "${ADMIN_ROOT}\xiph-license.html" - File "${ADMIN_ROOT}\apache-2.0.txt" - File "${ADMIN_ROOT}\apache-2.0.html" - File "${ADMIN_ROOT}\applet.html" - File "${ADMIN_ROOT}\spinner.gif" - File "${ADMIN_ROOT}\spinner_stopped.gif" - File "${ADMIN_ROOT}\util.js" - File "${ADMIN_ROOT}\pngfix.js" - File "${ADMIN_ROOT}\no_access.html" - SetOutPath "$2\admin-root\lib-js" - File "${ADMIN_ROOT}\lib-js\prototype.js" - File "${ADMIN_ROOT}\lib-js\rico.js" - SetOutPath "$2\admin-root\lib-js\script.aculo.us" - File "${ADMIN_ROOT}\lib-js\script.aculo.us\builder.js" - File "${ADMIN_ROOT}\lib-js\script.aculo.us\controls.js" - File "${ADMIN_ROOT}\lib-js\script.aculo.us\dragdrop.js" - File "${ADMIN_ROOT}\lib-js\script.aculo.us\effects.js" - File "${ADMIN_ROOT}\lib-js\script.aculo.us\scriptaculous.js" - File "${ADMIN_ROOT}\lib-js\script.aculo.us\slider.js" - File "${ADMIN_ROOT}\lib-js\script.aculo.us\unittest.js" - SetOutPath "$2" - IfFileExists "$2\mapping.ini" HasMap - File "mapping.ini" - -HasMap: - IfFileExists "$2\firefly.log" HasLog - File "firefly.log" - -HasLog: - File "mt-daapd-example.conf" - IfFileExists "$2\mt-daapd.conf" HasConf - SetOverwrite off - CopyFiles "$2\mt-daapd-example.conf" "$2\mt-daapd.conf" - WriteINIStr "$2\mt-daapd.conf" "general" "mp3_dir" $3 - -HasConf: - WriteINIStr "$2\mt-daapd.conf" "plugins" "plugin_dir" "plugins" - WriteINIStr "$2\mt-daapd.conf" "plugins" "plugins" "" - ReadINIStr $0 "$2\mt-daapd.conf" "general" "rescan_interval" - StrCmp $0 "" rescan_set rescan_skip - rescan_set: - WriteINIStr "$2\mt-daapd.conf" "general" "rescan_interval" "600" - rescan_skip: - - ReadINIStr $0 "$2\mt-daapd.conf" "general" "logfile" - StrCmp $0 "" logfile_set logfile_skip - - logfile_set: - WriteINIStr "$2\mt-daapd.conf" "general" "logfile" "firefly.log" - logfile_skip: - - ; Check for default exts - ReadINIStr $0 "$2\mt-daapd.conf" "general" "extensions" - StrCmp $0 ".mp3,.m4a,.m4p" ext_set ext_skip - - ext_set: - WriteINIStr "$2\mt-daapd.conf" "general" "extensions" ".mp3,.m4a,.m4p,.wma" - - ext_skip: - - ; Check for truncate - ReadINIStr $0 "$2\mt-daapd.conf" "general" "truncate" - StrCmp $0 "" trunc_set trunc_skip - - trunc_set: - WriteINIStr "$2\mt-daapd.conf" "general" "truncate" "1" - - trunc_skip: - WriteINIStr "$2\mt-daapd.conf" "general" "db_type" "sqlite3" - AccessControl::SetOnFile "$2\mt-daapd.conf" "Everyone" "FullAccess" - AccessControl::SetOnFile "$2\mapping.ini" "Everyone" "FullAccess" - AccessControl::SetOnFile "$2\firefly.log" "Everyone" "FullAccess" - SetAutoClose False -SectionEnd - -Section -AdditionalIcons - WriteIniStr "$2\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" - CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}" - CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\$(STRING_WEBSITE).lnk" "$2\${PRODUCT_NAME}.url" - CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\$(STRING_UNINSTALL).lnk" "$2\uninst.exe" - CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\$(STRING_DEBUG_MODE).lnk" "$2\firefly.exe" "-d9 -f" - CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\$(STRING_FF_CONFIGURATION).lnk" "$2\FireflyShell.exe" - CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\$(STRING_ADV_CONFIG).lnk" "notepad.exe" "$2\mt-daapd.conf" - - Delete "$SMPROGRAMS\Startup\Firefly Configuration.lnk" - -SectionEnd - -!include "LogicLib.nsh" -!define UNINSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall" -!define APP_KEY "{A49F249F-0C91-497F-86DF-B2585E8E76B7}" -Section -VCRedistributable - ReadRegStr $R0 HKLM "${UNINSTALL_KEY}\${APP_KEY}\" "DisplayName" - ${If} ${Errors} - # reg value doesn't exist (ie, needs installed) - SetOutPath "$2\" - File "${REDIST_SOURCE}\WindowsInstaller-KB893803-v2-x86.exe" - File "${REDIST_SOURCE}\VCRedist_x86.exe" - ExecWait '"$2\WindowsInstaller-KB893803-v2-x86.exe" /quiet /norestart' - ExecWait '"$2\VCRedist_x86.exe" /Q' - ${EndIf} -SectionEnd - -Section -Post - WriteUninstaller "$2\uninst.exe" - WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$2\firefly.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$2\uninst.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$2\firefly.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" - - DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "FireflyShell" - - ${GetParameters} $R0 - ClearErrors - ${GetOptionsS} $R0 "/N" $R1 - - IfErrors 0 +2 ; Skip the write if we have the /N option - WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "FireflyShell" '"$2\FireflyShell.exe" -q' - -; ExecWait "$2\firefly.exe -i" - - nsSCM::Install "${PRODUCT_NAME}" "${PRODUCT_SERVICE}" 16 2 "$2\firefly.exe" "" "Bonjour Service" "" "" - Pop $0 - Pop $1 - - StrCmp $0 "success" lbl_install_success - IntCmp $1 1073 lbl_install_success ; service already exists - MessageBox MB_OK "Error installing service: $1" - - lbl_install_success: -; ExecWait 'netsh firewall add allowedprogram "$2\firefly.exe" "${PRODUCT_NAME}" enable' -; Use the SimpleFC plugin - - SimpleFC::IsFirewallServiceRunning - Pop $0 - Pop $1 - - intcmp $1 0 lbl_no_fw ; if 0, then skip fw config - SimpleFC::AddApplication "Firefly Media Server" "$2\Firefly.exe" 0 2 "" 1 - - lbl_no_fw: - nsSCM::Start "${PRODUCT_NAME}" - ${GetParameters} $R0 - ClearErrors - ${GetOptionsS} $R0 "/N" $R1 - - IfErrors 0 +2 ; Skip the run if we have the /N option - Exec '"$2\FireflyShell.exe" -q' -SectionEnd - - -Function un.onUninstSuccess - HideWindow - MessageBox MB_ICONINFORMATION|MB_OK "$(un.STRING_UNINSTALLED)" -FunctionEnd - -Function un.onInit - MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(un.STRING_AREYOUSURE)" IDYES +2 - Abort -FunctionEnd - -Function .onInit -; Must set $INSTDIR here to avoid adding ${PRODUCT_NAME} to the end of the -; path when user selects a new directory using the 'Browse' button. - StrCpy $INSTDIR "$PROGRAMFILES\${PRODUCT_NAME}" - StrCpy $2 "$PROGRAMFILES\${PRODUCT_NAME}" - StrCpy $3 "$DOCUMENTS\My Music" - IfSilent lbl_skip_lang - - Push "" - Push ${LANG_ENGLISH} - Push English - Push ${LANG_FRENCH} - Push French - Push ${LANG_DUTCH} - Push Dutch - Push ${LANG_GERMAN} - Push German - Push ${LANG_JAPANESE} - Push Japanese - Push ${LANG_SWEDISH} - Push Swedish - Push ${LANG_ITALIAN} - Push Italian - ; more - Push A - LangDLL::LangDialog "Installer Language" "Please select the language of the installer" - Pop $LANGUAGE - StrCmp $LANGUAGE "cancel" 0 +2 - Abort - - lbl_skip_lang: - -FunctionEnd - -Function LicensePost - StrCpy $9 "0" -FunctionEnd - -Function DirectoryPre - StrCmp $9 "0" OK - ;Skip 2nd (Music) Directory Page if conf file Exists - IfFileExists "$2\mt-daapd.conf" "" OK - Abort -OK: -FunctionEnd - - -Function DirectoryShow - StrCmp $9 "0" AppDirectoryPage - StrCmp $9 "1" MusicDirectoryPage - -AppDirectoryPage: - StrCpy $9 "1" - !insertmacro MUI_INNERDIALOG_TEXT 1041 "$(STRING_DESTFOLDER)" - !insertmacro MUI_INNERDIALOG_TEXT 1019 "$PROGRAMFILES\${PRODUCT_NAME}\" - !insertmacro MUI_INNERDIALOG_TEXT 1006 "$(STRING_DESTDETAIL)" - Goto EndDirectoryShow - -MusicDirectoryPage: - StrCpy $9 "2" - !insertmacro MUI_HEADER_TEXT "$(STRING_MUSICTITLE)" "$(STRING_MUSICHEADER)" - !insertmacro MUI_INNERDIALOG_TEXT 1041 "$(STRING_MUSICFOLDER)" - !insertmacro MUI_INNERDIALOG_TEXT 1019 "$DOCUMENTS\My Music" - !insertmacro MUI_INNERDIALOG_TEXT 1006 "$(STRING_MUSICDETAIL)" -EndDirectoryShow: -FunctionEnd - -Function DirectoryLeave - StrCmp $9 "1" SaveInstallDir - StrCmp $9 "2" SaveMusicDir - Goto EndDirectoryLeave - -SaveInstallDir: - StrCpy $2 $INSTDIR - Goto EndDirectoryLeave - -SaveMusicDir: -; Push $INSTDIR -; Call GetParent -; Pop $3 - StrCpy $3 $INSTDIR - -EndDirectoryLeave: -FunctionEnd - -Function .onVerifyInstDir - StrCmp $9 "2" DataPath All - -DataPath: -;all valid if UNC - StrCpy $R2 $INSTDIR 2 - StrCmp $R2 "\\" PathOK - -All: -; Invalid path if root - Push $INSTDIR - call GetRoot - Pop $R1 - StrCmp $R1 $INSTDIR "" PathOK - Abort - -PathOK: -FunctionEnd - -;-------------------------------- -;Helper Functions - -; GetParent -; input, top of stack (e.g. C:\Program Files\Poop) -; output, top of stack (replaces, with e.g. C:\Program Files) -; modifies no other variables. -; -; Usage: -; Push "C:\Program Files\Directory\Whatever" -; Call GetParent -; Pop $R0 -; ; at this point $R0 will equal "C:\Program Files\Directory" -Function GetParent - - Exch $R0 - Push $R1 - Push $R2 - Push $R3 - - StrCpy $R1 0 - StrLen $R2 $R0 - - loop: - IntOp $R1 $R1 + 1 - IntCmp $R1 $R2 get 0 get - StrCpy $R3 $R0 1 -$R1 - StrCmp $R3 "\" get - Goto loop - - get: - StrCpy $R0 $R0 -$R1 - - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 - -FunctionEnd - -Function GetRoot - Exch $0 - Push $1 - Push $2 - Push $3 - Push $4 - - StrCpy $1 $0 2 - StrCmp $1 "\\" UNC - StrCpy $0 $1 - Goto done - -UNC: - StrCpy $2 3 - StrLen $3 $0 - loop: - IntCmp $2 $3 "" "" loopend - StrCpy $1 $0 1 $2 - IntOp $2 $2 + 1 - StrCmp $1 "\" loopend loop - loopend: - StrCmp $4 "1" +3 - StrCpy $4 1 - Goto loop - IntOp $2 $2 - 1 - StrCpy $0 $0 $2 - -done: - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Exch $0 -FunctionEnd - -Section Uninstall - SetAutoClose false - - !include WinMessages.nsh - close_loop: - FindWindow $0 "" "FireflyShellNotifyIconHidden" - - IntCmp $0 0 close_done - SendMessage $0 ${WM_QUIT} 0 0 - SendMessage $0 ${WM_CLOSE} 0 0 - SendMessage $0 ${WM_DESTROY} 0 0 - Sleep 125 - Goto close_loop - close_done: - - IntOp $9 0 + 0 - - nsSCM::QueryStatus "${PRODUCT_NAME}" - Pop $0 - Pop $1 - - StrCmp $0 "success" un_lbl_stop_service - goto un_lbl_continue - - un_lbl_stop_service: - DetailPrint "$(STRING_STOPPING_SERVICE)" - nsSCM::Stop "$(PRODUCT_NAME)" - - un_lbl_wait_stop: - Sleep 1000 - nsSCM::QueryStatus "$(PRODUCT_NAME)" - Pop $0 - Pop $1 - -; DetailPrint $0 - StrCmp $0 "success" un_lbl_check_status - goto un_lbl_continue - - un_lbl_check_status: - IntCmp $1 1 un_lbl_continue un_lbl_wait_stop un_lbl_wait_stop - - un_lbl_continue: - ; should really loop until service stops... - DetailPrint "$(STRING_WAITING_FOR_STOP)" - - IntOp $9 $9 + 1 - IntCmp $9 10 +1 +1 un_lbl_done_pre - - Sleep 1500 - Delete "$INSTDIR\firefly.exe" - IfErrors un_lbl_continue - - un_lbl_done_pre: - Sleep 1000 - nsSCM::Remove "${PRODUCT_NAME}" - - Pop $0 - StrCmp $0 "success" lbl_continue_uninstall - - MessageBox MB_OK "Error Uninstalling service: $1" - - lbl_continue_uninstall: - - Delete "$INSTDIR\admin-root\lib-js\script.aculo.us\*" - RMDir "$INSTDIR\admin-root\lib-js\script.aculo.us" - - Delete "$INSTDIR\admin-root\lib-js\*" - RMDir "$INSTDIR\admin-root\lib-js" - - Delete "$INSTDIR\admin-root\*" - RMDir "$INSTDIR\admin-root" - - Delete "$INSTDIR\plugins\*" - RMDir "$INSTDIR\plugins" - - Delete "$INSTDIR\*" - RMDir "$INSTDIR" - - Delete "$SMPROGRAMS\${PRODUCT_NAME}\*" - RMDir "$SMPROGRAMS\${PRODUCT_NAME}" - RMDir "$INSTDIR" - - DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" - DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" - SetAutoClose false -SectionEnd diff --git a/win32/nsi/nsSCM.dll b/win32/nsi/nsSCM.dll deleted file mode 100644 index 067a6d15..00000000 Binary files a/win32/nsi/nsSCM.dll and /dev/null differ diff --git a/win32/out-daap/out-daap.def b/win32/out-daap/out-daap.def deleted file mode 100644 index 55fbb8d6..00000000 --- a/win32/out-daap/out-daap.def +++ /dev/null @@ -1,4 +0,0 @@ -LIBRARY out-daap -EXPORTS - plugin_info - diff --git a/win32/out-daap/out-daap.rc.templ b/win32/out-daap/out-daap.rc.templ deleted file mode 100644 index 35313aed..00000000 --- a/win32/out-daap/out-daap.rc.templ +++ /dev/null @@ -1,103 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,$WCREV$ - PRODUCTVERSION 1,0,0,$WCREV$ - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "http://www.fireflymediaserver.org" - VALUE "CompanyName", "Ron Pedde" - VALUE "FileDescription", "DAAP Output Plugin" - VALUE "FileVersion", "1.0 svn-$WCREV$" - VALUE "InternalName", "out-daap" - VALUE "LegalCopyright", "Copyright (C) 2006 Ron Pedde" - VALUE "OriginalFilename", "out-daap.dll" - VALUE "ProductName", "Firefly Media Server" - VALUE "ProductVersion", "1.0 svn-$WCREV$" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/win32/out-daap/out-daap.vcproj b/win32/out-daap/out-daap.vcproj deleted file mode 100644 index c0d10591..00000000 --- a/win32/out-daap/out-daap.vcproj +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/out-daap/resource.h b/win32/out-daap/resource.h deleted file mode 100644 index 86393a63..00000000 --- a/win32/out-daap/resource.h +++ /dev/null @@ -1,14 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by out-daap.rc - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/win32/rsp-res.h b/win32/rsp-res.h deleted file mode 100644 index 7d485439..00000000 --- a/win32/rsp-res.h +++ /dev/null @@ -1,15 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by w32-event.rc -// - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/win32/rsp.def b/win32/rsp.def deleted file mode 100644 index 8ff0e27f..00000000 --- a/win32/rsp.def +++ /dev/null @@ -1,5 +0,0 @@ -LIBRARY rsp - -EXPORTS - plugin_info - diff --git a/win32/rsp.rc.templ b/win32/rsp.rc.templ deleted file mode 100644 index 0afc893d..00000000 --- a/win32/rsp.rc.templ +++ /dev/null @@ -1,103 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "rsp-res.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,$WCREV$ - PRODUCTVERSION 1,0,0,$WCREV$ - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "http://www.fireflymediaserver.org" - VALUE "CompanyName", "Ron Pedde" - VALUE "FileDescription", "RSP Output Plugin" - VALUE "FileVersion", "1.0 svn-$WCREV$" - VALUE "InternalName", "rsp" - VALUE "LegalCopyright", "Copyright (C) 2006 Ron Pedde" - VALUE "OriginalFilename", "rsp.dll" - VALUE "ProductName", "Firefly Media Server" - VALUE "ProductVersion", "1.0 svn-$WCREV$" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/win32/rsp.vcproj b/win32/rsp.vcproj deleted file mode 100644 index ed9b637b..00000000 --- a/win32/rsp.vcproj +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/ssc-ffmpeg-res.h b/win32/ssc-ffmpeg-res.h deleted file mode 100644 index 63c78f09..00000000 --- a/win32/ssc-ffmpeg-res.h +++ /dev/null @@ -1,14 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by ssc-ffmpeg.rc - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/win32/ssc-ffmpeg.def b/win32/ssc-ffmpeg.def deleted file mode 100644 index 48977aa4..00000000 --- a/win32/ssc-ffmpeg.def +++ /dev/null @@ -1,4 +0,0 @@ -LIBRARY ssc-ffmpeg -EXPORTS - plugin_info - diff --git a/win32/ssc-ffmpeg.rc.templ b/win32/ssc-ffmpeg.rc.templ deleted file mode 100644 index eb59187b..00000000 --- a/win32/ssc-ffmpeg.rc.templ +++ /dev/null @@ -1,103 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "ssc-ffmpeg-res.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "ssc-ffmpeg-res.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,$WCREV$ - PRODUCTVERSION 1,0,0,$WCREV$ - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "http://www.fireflymediaserver.org" - VALUE "CompanyName", "Ron Pedde" - VALUE "FileDescription", "FFMPEG Transcoder Plugin" - VALUE "FileVersion", "1.0 svn-$WCREV$" - VALUE "InternalName", "ssc-ffmpeg" - VALUE "LegalCopyright", "Copyright (C) 2006 Ron Pedde" - VALUE "OriginalFilename", "ssc-ffmpeg.dll" - VALUE "ProductName", "Firefly Media Server" - VALUE "ProductVersion", "1.0 svn-$WCREV$" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/win32/ssc-ffmpeg.vcproj b/win32/ssc-ffmpeg.vcproj deleted file mode 100644 index 5efdf593..00000000 --- a/win32/ssc-ffmpeg.vcproj +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/ssc-wma/resource.h b/win32/ssc-wma/resource.h deleted file mode 100644 index 14ba8665..00000000 --- a/win32/ssc-wma/resource.h +++ /dev/null @@ -1,14 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by ssc-wma.rc - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/win32/ssc-wma/ssc-wma.def b/win32/ssc-wma/ssc-wma.def deleted file mode 100644 index f1415257..00000000 --- a/win32/ssc-wma/ssc-wma.def +++ /dev/null @@ -1,4 +0,0 @@ -LIBRARY ssc-wma -EXPORTS - plugin_info - diff --git a/win32/ssc-wma/ssc-wma.rc.templ b/win32/ssc-wma/ssc-wma.rc.templ deleted file mode 100644 index 6df9881c..00000000 --- a/win32/ssc-wma/ssc-wma.rc.templ +++ /dev/null @@ -1,103 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,$WCREV$ - PRODUCTVERSION 1,0,0,$WCREV$ - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "http://www.fireflymediaserver.org" - VALUE "CompanyName", "Ron Pedde" - VALUE "FileDescription", "WMA Transcoder Plugin" - VALUE "FileVersion", "1.0 svn-$WCREV$" - VALUE "InternalName", "ssc-wma" - VALUE "LegalCopyright", "Copyright (C) 2006 Ron Pedde" - VALUE "OriginalFilename", "ssc-wma.dll" - VALUE "ProductName", "Firefly Media Server" - VALUE "ProductVersion", "1.0 svn-$WCREV$" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/win32/ssc-wma/ssc-wma.vcproj b/win32/ssc-wma/ssc-wma.vcproj deleted file mode 100644 index a7bb21e4..00000000 --- a/win32/ssc-wma/ssc-wma.vcproj +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/svcctrl/resource.h b/win32/svcctrl/resource.h deleted file mode 100644 index 7105d43a..00000000 --- a/win32/svcctrl/resource.h +++ /dev/null @@ -1,23 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by svcctrl.rc -// -#define IDD_SVCCTRL_DIALOG 102 -#define IDS_APP_TITLE 103 -#define IDI_SVCCTRL 107 -#define IDI_SMALL 108 -#define IDC_SVCCTRL 109 -#define IDR_MAINFRAME 128 -#define IDC_STATIC -1 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NO_MFC 1 -#define _APS_NEXT_RESOURCE_VALUE 129 -#define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 110 -#endif -#endif diff --git a/win32/svcctrl/small.ico b/win32/svcctrl/small.ico deleted file mode 100644 index d551aa3a..00000000 Binary files a/win32/svcctrl/small.ico and /dev/null differ diff --git a/win32/svcctrl/stdafx.cpp b/win32/svcctrl/stdafx.cpp deleted file mode 100644 index 92ddc567..00000000 --- a/win32/svcctrl/stdafx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// svcctrl.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/win32/svcctrl/stdafx.h b/win32/svcctrl/stdafx.h deleted file mode 100644 index aa16b964..00000000 --- a/win32/svcctrl/stdafx.h +++ /dev/null @@ -1,39 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - - -#define _CRT_SECURE_NO_DEPRECATE - -#pragma once -// Modify the following defines if you have to target a platform prior to the ones specified below. -// Refer to MSDN for the latest info on corresponding values for different platforms. -#ifndef WINVER // Allow use of features specific to Windows XP or later. -#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. -#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. -#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. -#endif - -#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. -#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. -#endif - -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -// Windows Header Files: -#include - -// C RunTime Header Files -#include -#include -#include -#include - - -// TODO: reference additional headers your program requires here diff --git a/win32/svcctrl/svcctrl.cpp b/win32/svcctrl/svcctrl.cpp deleted file mode 100644 index bae24668..00000000 --- a/win32/svcctrl/svcctrl.cpp +++ /dev/null @@ -1,140 +0,0 @@ -// svcctrl.cpp : Defines the entry point for the application. -// - -#include "stdafx.h" -#include "svcctrl.h" - -#define MAX_LOADSTRING 100 - -#define E_SVC_SUCCESS 0 -#define E_SVC_BADARGS 1 -#define E_SVC_NORIGHTS 2 -#define E_SVC_CANTSTART 3 -#define E_SVC_CANTSTOP 4 -#define E_SVC_CANTCONFIG 5 - -// Global Variables: -HINSTANCE hInst; // current instance - -// code re-use via cut and paste. woohoo. This from fellow.sourceforge.net - -/*===========================================================================*/ -/* Command line conversion routines */ -/*===========================================================================*/ - -/* Returns the first character in the next argument */ - -char *winDrvCmdLineGetNextFirst(char *lpCmdLine) { - while (*lpCmdLine == ' ' && *lpCmdLine != '\0') - lpCmdLine++; - return (*lpCmdLine == '\0') ? NULL : lpCmdLine; -} - - -/* Returns the first character after the next argument */ - -char *winDrvCmdLineGetNextEnd(char *lpCmdLine) { - int InString = FALSE; - - while (((*lpCmdLine != ' ') && (*lpCmdLine != '\0')) || - (InString && (*lpCmdLine != '\0'))) { - if (*lpCmdLine == '\"') - InString = !InString; - lpCmdLine++; - } - return lpCmdLine; -} - -/* Returns an argv vector and takes argc as a pointer parameter */ -/* Must free memory argv on exit */ - -char **winDrvCmdLineMakeArgv(char *lpCmdLine, int *argc) { - int elements = 0, i; - char *tmp; - char **argv; - char *argstart, *argend; - - tmp = winDrvCmdLineGetNextFirst(lpCmdLine); - if (tmp != 0) { - while ((tmp = winDrvCmdLineGetNextFirst(tmp)) != NULL) { - tmp = winDrvCmdLineGetNextEnd(tmp); - elements++; - } - } - argv = (char **) malloc(4*(elements + 2)); - argv[0] = "svcctrl.exe"; - argend = lpCmdLine; - for (i = 1; i <= elements; i++) { - argstart = winDrvCmdLineGetNextFirst(argend); - argend = winDrvCmdLineGetNextEnd(argstart); - if (*argstart == '\"') - argstart++; - if (*(argend - 1) == '\"') - argend--; - *argend++ = '\0'; - argv[i] = argstart; - } - argv[elements + 1] = NULL; - *argc = elements + 1; - return argv; -} - -int APIENTRY _tWinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow) { - - char *cmdline = _strdup(lpCmdLine); - char **argv; - int items; - int retval=0; - - SC_HANDLE scm; - SC_HANDLE svc; - - SERVICE_STATUS status; - - UNREFERENCED_PARAMETER(hPrevInstance); - UNREFERENCED_PARAMETER(lpCmdLine); - - argv=winDrvCmdLineMakeArgv(cmdline,&items); - if(items != 3) - return E_SVC_BADARGS; - - - if(!(scm = OpenSCManager(0,0,SC_MANAGER_ALL_ACCESS))) { - return E_SVC_NORIGHTS; - } - - if(!(svc = OpenService(scm, argv[2],SC_MANAGER_ALL_ACCESS))) { - CloseServiceHandle(scm); - return E_SVC_NORIGHTS; - } - - if(!strcmp(argv[1],"start")) { - if(!StartService(svc,0,NULL)) { - retval = E_SVC_CANTSTART; - } - } - - if(!strcmp(argv[1],"stop")) { - if(!ControlService(svc,SERVICE_CONTROL_STOP,&status)) { - retval = E_SVC_CANTSTOP; - } - } - - if(!strcmp(argv[1],"manual")) { - if (!ChangeServiceConfig(svc, SERVICE_NO_CHANGE, SERVICE_DEMAND_START, SERVICE_NO_CHANGE, NULL, NULL, NULL, NULL, NULL, NULL, NULL)) - retval = E_SVC_CANTCONFIG; - } - - if(!strcmp(argv[1],"auto")) { - if (!ChangeServiceConfig(svc, SERVICE_NO_CHANGE, SERVICE_AUTO_START, SERVICE_NO_CHANGE, NULL, NULL, NULL, NULL, NULL, NULL, NULL)) - retval = E_SVC_CANTCONFIG; - } - - - CloseServiceHandle(svc); - CloseServiceHandle(scm); - return retval; -} diff --git a/win32/svcctrl/svcctrl.exe.manifest b/win32/svcctrl/svcctrl.exe.manifest deleted file mode 100644 index 53be49b0..00000000 --- a/win32/svcctrl/svcctrl.exe.manifest +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/win32/svcctrl/svcctrl.h b/win32/svcctrl/svcctrl.h deleted file mode 100644 index e60f2eb7..00000000 --- a/win32/svcctrl/svcctrl.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#include "resource.h" diff --git a/win32/svcctrl/svcctrl.ico b/win32/svcctrl/svcctrl.ico deleted file mode 100644 index d551aa3a..00000000 Binary files a/win32/svcctrl/svcctrl.ico and /dev/null differ diff --git a/win32/svcctrl/svcctrl.rc b/win32/svcctrl/svcctrl.rc deleted file mode 100644 index 3e4979db..00000000 --- a/win32/svcctrl/svcctrl.rc +++ /dev/null @@ -1,89 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_SVCCTRL ICON "svcctrl.ico" -IDI_SMALL ICON "small.ico" - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_APP_TITLE "svcctrl" - IDC_SVCCTRL "SVCCTRL" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/win32/svcctrl/svcctrl.sln b/win32/svcctrl/svcctrl.sln deleted file mode 100644 index ad551bb9..00000000 --- a/win32/svcctrl/svcctrl.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "svcctrl", "svcctrl.vcproj", "{C49A74DC-C9A3-4562-9BA1-F903AADE87C2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C49A74DC-C9A3-4562-9BA1-F903AADE87C2}.Debug|Win32.ActiveCfg = Debug|Win32 - {C49A74DC-C9A3-4562-9BA1-F903AADE87C2}.Debug|Win32.Build.0 = Debug|Win32 - {C49A74DC-C9A3-4562-9BA1-F903AADE87C2}.Release|Win32.ActiveCfg = Release|Win32 - {C49A74DC-C9A3-4562-9BA1-F903AADE87C2}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/win32/svcctrl/svcctrl.vcproj b/win32/svcctrl/svcctrl.vcproj deleted file mode 100644 index ec75a772..00000000 --- a/win32/svcctrl/svcctrl.vcproj +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win32/versionize.bat b/win32/versionize.bat deleted file mode 100644 index eb30de43..00000000 --- a/win32/versionize.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off - -set SUBWC="c:\program files\tortoisesvn\bin\subwcrev.exe" -if not exist %SUBWC% set SUBWC=copy - -echo Fixing version info... -%SUBWC% %0\..\.. %0\..\config.h.templ %0\..\config.h -%SUBWC% %0\..\.. %0\..\nsi\mt-daapd.nsi.templ %0\..\nsi\mt-daapd.nsi -%SUBWC% %0\..\.. %0\..\ssc-ffmpeg.rc.templ %0\..\ssc-ffmpeg.rc -%SUBWC% %0\..\.. %0\..\mt-daapd.rc.templ %0\..\mt-daapd.rc -%SUBWC% %0\..\.. %0\..\rsp.rc.templ %0\..\rsp.rc -%SUBWC% %0\..\.. %0\..\w32-event.rc.templ %0\..\w32-event.rc -%SUBWC% %0\..\.. %0\..\FireflyShell\version.h.templ %0\..\FireflyShell\version.h -%SUBWC% %0\..\.. %0\..\ssc-wma\ssc-wma.rc.templ %0\..\ssc-wma\ssc-wma.rc -%SUBWC% %0\..\.. %0\..\out-daap\out-daap.rc.templ %0\..\out-daap\out-daap.rc - -if exist %0\..\do_sig.cmd.templ %SUBWC% %0\..\.. %0\..\do_sig.cmd.templ %0\..\do_sig.cmd - - diff --git a/win32/w32-event-res.h b/win32/w32-event-res.h deleted file mode 100644 index 7d485439..00000000 --- a/win32/w32-event-res.h +++ /dev/null @@ -1,15 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by w32-event.rc -// - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/win32/w32-event.def b/win32/w32-event.def deleted file mode 100644 index b604ead9..00000000 --- a/win32/w32-event.def +++ /dev/null @@ -1,4 +0,0 @@ -LIBRARY w32-event -EXPORTS - plugin_info - diff --git a/win32/w32-event.rc.templ b/win32/w32-event.rc.templ deleted file mode 100644 index 8120fa52..00000000 --- a/win32/w32-event.rc.templ +++ /dev/null @@ -1,103 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "w32-event-res.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,$WCREV$ - PRODUCTVERSION 1,0,0,$WCREV$ - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "http://www.fireflymediaserver.org" - VALUE "CompanyName", "Ron Pedde" - VALUE "FileDescription", "Win32 Event Plugin" - VALUE "FileVersion", "1.0 svn-$WCREV$" - VALUE "InternalName", "w32-event" - VALUE "LegalCopyright", "Copyright (C) 2006 Ron Pedde" - VALUE "OriginalFilename", "w32-event.dll" - VALUE "ProductName", "Firefly Media Server" - VALUE "ProductVersion", "1.0 svn-$WCREV$" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/win32/w32-event.vcproj b/win32/w32-event.vcproj deleted file mode 100644 index e3aaeb0c..00000000 --- a/win32/w32-event.vcproj +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -