apply misc fixes from Markus Fischer and Rambetter
[xonotic/netradiant.git] / radiant / pluginentities.cpp
1 /*
2 Copyright (C) 1999-2007 id Software, Inc. and contributors.
3 For a list of contributors, see the accompanying CONTRIBUTORS file.
4
5 This file is part of GtkRadiant.
6
7 GtkRadiant is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 GtkRadiant is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GtkRadiant; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20 */
21
22 //-----------------------------------------------------------------------------
23 //
24 // DESCRIPTION:
25 // implementation of IPluginEntities specific interface
26 // 
27
28 #ifdef USEPLUGINENTITIES
29
30 #include "stdafx.h"
31 #if defined (__linux__) || defined (__APPLE__)
32 #include <dirent.h>
33 #endif
34 //#include "qe3.h"
35
36 int QERApp_EClassScanDir (char *path, void* hPlug)
37 {
38   char          temp[NAME_MAX];
39   char          filebase[NAME_MAX];
40   char          filename[NAME_MAX];
41   char          *s;
42   eclass_t      *e;
43   DIR           *dir;
44   struct dirent *dirlist;
45
46   QE_ConvertDOSToUnixName( temp, path );
47   strcpy (filebase, path);
48   s = filebase + strlen(filebase)-1;
49   while (*s != '\\' && *s != '/' && s!=filebase)
50     s--;
51   *s = 0;
52
53   dir = opendir (path);
54   if (dir != NULL)
55   {
56     while ((dirlist = readdir (dir)) != NULL)
57     {                   
58       sprintf (filename, "%s/%s", filebase, dirlist->d_name);
59       Eclass_ScanFile (filename);
60
61       if (eclass_found)
62       {
63         e = eclass_e;
64         e->modelpath = strdup(dirlist->d_name);
65         e->nShowFlags |= ECLASS_PLUGINENTITY;
66         e->hPlug = hPlug;
67       }
68     }
69     closedir (dir);
70   }
71   return 0;
72 }
73
74 #endif // USEPLUGINENTITIES