|
|
|
/*
|
|
|
|
* Copyright (c) 2003 Benjamin Reed <ranger@befunk.com>
|
|
|
|
*
|
|
|
|
* info_osx.cpp is part of the KDE program kcminfo. Copied wholesale
|
|
|
|
* from info_fbsd.cpp =)
|
|
|
|
*
|
|
|
|
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#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
|
|
|
|
|
|
|
|
/*
|
|
|
|
* all following functions should return TRUE, when the Information
|
|
|
|
* was filled into the lBox-Widget. Returning FALSE indicates that
|
|
|
|
* information was not available.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/sysctl.h>
|
|
|
|
|
|
|
|
#include <fstab.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
#include <iostream.h>
|
|
|
|
|
|
|
|
#include <tqdict.h>
|
|
|
|
#include <tqfile.h>
|
|
|
|
#include <tqfontmetrics.h>
|
|
|
|
#include <tqptrlist.h>
|
|
|
|
#include <tqstring.h>
|
|
|
|
#include <tqtextstream.h>
|
|
|
|
|
|
|
|
#include <kdebug.h>
|
|
|
|
|
|
|
|
#include <mach/mach.h>
|
|
|
|
#include <mach-o/arch.h>
|
|
|
|
|
|
|
|
#ifdef HAVE_COREAUDIO
|
|
|
|
#include <CoreAudio/CoreAudio.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <machine/limits.h>
|
|
|
|
|
|
|
|
bool GetInfo_CPU (TQListView *lBox)
|
|
|
|
{
|
|
|
|
|
|
|
|
TQString cpustring;
|
|
|
|
|
|
|
|
kern_return_t ret;
|
|
|
|
struct host_basic_info basic_info;
|
|
|
|
unsigned int count=HOST_BASIC_INFO_COUNT;
|
|
|
|
|
|
|
|
ret=host_info(mach_host_self(), HOST_BASIC_INFO,
|
|
|
|
(host_info_t)&basic_info, &count);
|
|
|
|
if (ret != KERN_SUCCESS) {
|
|
|
|
kdDebug() << "unable to get host information from mach" << endl;
|
|
|
|
return false;
|
|
|
|
} else {
|
|
|
|
kdDebug() << "got Host Info: (" << basic_info.avail_cpus << ") CPUs available" << endl;
|
|
|
|
const NXArchInfo *archinfo;
|
|
|
|
archinfo=NXGetArchInfoFromCpuType(basic_info.cpu_type, basic_info.cpu_subtype);
|
|
|
|
new TQListViewItem(lBox, i18n("Kernel is configured for %1 CPUs").arg(basic_info.max_cpus));
|
|
|
|
for (int i = 1; i <= basic_info.avail_cpus; i++) {
|
|
|
|
cpustring = i18n("CPU %1: %2").arg(i).arg(archinfo->description);
|
|
|
|
new TQListViewItem(lBox, cpustring);
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetInfo_IRQ (TQListView *)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetInfo_DMA (TQListView *)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetInfo_PCI (TQListView *)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetInfo_IO_Ports (TQListView *)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetInfo_Sound (TQListView *lBox)
|
|
|
|
{
|
|
|
|
#ifdef HAVE_COREAUDIO
|
|
|
|
#define kMaxStringSize 1024
|
|
|
|
OSStatus status;
|
|
|
|
AudioDeviceID gOutputDeviceID;
|
|
|
|
unsigned long propertySize;
|
|
|
|
char deviceName[kMaxStringSize];
|
|
|
|
char manufacturer[kMaxStringSize];
|
|
|
|
propertySize = sizeof(gOutputDeviceID);
|
|
|
|
status = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &propertySize, &gOutputDeviceID);
|
|
|
|
if (status) {
|
|
|
|
kdDebug() << "get default output device failed, status = " << (int)status << endl;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (gOutputDeviceID != kAudioDeviceUnknown) {
|
|
|
|
|
|
|
|
propertySize = kMaxStringSize;
|
|
|
|
|
|
|
|
/* Device Name */
|
|
|
|
status = AudioDeviceGetProperty(gOutputDeviceID, 1, 0, kAudioDevicePropertyDeviceName, &propertySize, deviceName);
|
|
|
|
if (status) {
|
|
|
|
kdDebug() << "get device name failed, status = " << (int)status << endl;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
new TQListViewItem(lBox, i18n("Device Name: %1").arg(deviceName));
|
|
|
|
|
|
|
|
/* Manufacturer */
|
|
|
|
status = AudioDeviceGetProperty(gOutputDeviceID, 1, 0, kAudioDevicePropertyDeviceManufacturer, &propertySize, manufacturer);
|
|
|
|
if (status) {
|
|
|
|
kdDebug() << "get manufacturer failed, status = " << (int)status << endl;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
new TQListViewItem(lBox, i18n("Manufacturer: %1").arg(manufacturer));
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
return false;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetInfo_SCSI (TQListView *lbox)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetInfo_Partitions (TQListView *lbox)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetInfo_XServer_and_Video (TQListView *lBox)
|
|
|
|
{
|
|
|
|
return GetInfo_XServer_Generic( lBox );
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetInfo_Devices (TQListView *lbox)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|