summaryrefslogtreecommitdiffstats
path: root/kcontrol/info/info_svr4.cpp
blob: 1f71246b7abe12940e1764246c26041a15f20d48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/* 	
    info_svr4.cpp

    UNIX System V Release 4 specific Information about the Hardware.
    Appropriate for SCO OpenServer and UnixWare.
    Written 20-Feb-99 by Ronald Joe Record ([email protected])
    Initially based on info_sgi.cpp
*/

#define INFO_CPU_AVAILABLE
#define INFO_IRQ_AVAILABLE
#define INFO_DMA_AVAILABLE
#define INFO_PCI_AVAILABLE
#define INFO_IOPORTS_AVAILABLE
#define INFO_SOUND_AVAILABLE
#define INFO_DEVICES_AVAILABLE
#define INFO_SCSI_AVAILABLE
#define INFO_PARTITIONS_AVAILABLE
#define INFO_XSERVER_AVAILABLE

#define INFO_DEV_SNDSTAT "/dev/sndstat"

#include <sys/systeminfo.h>

/*  all following functions should return true, when the Information 
    was filled into the lBox-Widget.
    returning false indicates, that information was not available.
*/

bool GetInfo_ReadfromFile( TQListView *lBox, char *Name, char splitchar  )
{
  TQString str;
  char buf[512];

  TQFile *file = new TQFile(Name);
  TQListViewItem* olditem = 0;

  if(!file->open(IO_ReadOnly)) {
    delete file; 
    return false;
  }
  
  while (file->readLine(buf,sizeof(buf)-1) > 0) {
      if (strlen(buf)) {
          char *p=buf;
          if (splitchar!=0)    /* remove leading spaces between ':' and the following text */
              while (*p) {
                  if (*p==splitchar) {
                      *p++ = ' ';
                      while (*p==' ') ++p;
                      *(--p) = splitchar;
                      ++p;
                  }
                  else ++p;
              }
          
          TQString s1 = TQString::fromLocal8Bit(buf);
          TQString s2 = s1.mid(s1.tqfind(splitchar)+1);
          
          s1.truncate(s1.tqfind(splitchar));
          if(!(s1.isEmpty() || s2.isEmpty()))
              olditem = new TQListViewItem(lBox, olditem, s1, s2);
      }
  }
  file->close();
  
  delete file;
  return true;
}

bool GetInfo_CPU( TQListView *lBox )
{
      char buf[256];

      sysinfo(SI_ARCHITECTURE, buf, sizeof(buf));
      new TQListViewItem(lBox, TQString::fromLocal8Bit(buf));
      return true;
}


bool GetInfo_IRQ( TQListView * )
{
	return false;
}

bool GetInfo_DMA( TQListView * )
{
	return false;
}

bool GetInfo_PCI( TQListView *lBox )
{
      char buf[256];

      sysinfo(SI_BUSTYPES, buf, sizeof(buf));
      new TQListViewItem(lBox, TQString::fromLocal8Bit(buf));
      return true;
}

bool GetInfo_IO_Ports( TQListView * )
{
	return false;
}

bool GetInfo_Sound( TQListView *lBox )
{
  if ( GetInfo_ReadfromFile( lBox, INFO_DEV_SNDSTAT, 0 ))
    return true;
  else
    return false;
}

bool GetInfo_Devices( TQListView * )
{
    return false;
}

bool GetInfo_SCSI( TQListView * )
{
    return false;
}

bool GetInfo_Partitions( TQListView * )
{
	return false;
}

bool GetInfo_XServer_and_Video( TQListView *lBox )
{
	return GetInfo_XServer_Generic( lBox );
}