text:
<TITLE>Index</TITLE>
<META NAME="description" CONTENT="Index">
<META NAME="keywords" CONTENT="debian-tutorial">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">

<LINK REL="STYLESHEET" HREF="debian-tutorial.css">

<LINK REL="next" HREF="node103.html">
<LINK REL="previous" HREF="node94.html">
<LINK REL="up" HREF="debian-tutorial.html">
<LINK REL="next" HREF="node103.html">

 Next: About this document ...
 Up: Debian GNU/Linux: Guide to
 Previous: The GNU General Public
 &nbsp   Contents

Index

$ (dollar sign)

regular expression

Regular Expressions

() (parentheses)

regular expression

Regular Expressions

(caret)

regular expression

Regular Expressions

* (regular expression)

Regular Expressions

* (wildcard)

Filename Expansion

. (regular expression)

Regular Expressions

/ (slash)

root directory

Files and Directories
 | Files and Directories

/bin directory

Files Present and Their

/etc (directory)

system-wide configuration

System-Wide Versus User-Specific Configuration
 | System-Wide Versus User-Specific Configuration

/etc directory

Files Present and Their
 | Files Present and Their
 | Files Present and Their

/etc/X11/Xsession

modifying

Customizing Your X Startup

/root directory

Files Present and Their

/sbin directory

Files Present and Their

/user directory

Files Present and Their

/var directory

Files Present and Their

/tmp directory

Files Present and Their

? wildcard

Filename Expansion

[] (brackets)

regular expression

Regular Expressions

  (tilde)

Using Files: A Tutorial

absolute filenames

Files and Directories
 | Using Files: A Tutorial

abstractions

Introduction to X

Access screen

dselect

Access

accessing

files

Mode

filesystems

Mounting a Filesystem

Help file (installation)

Select

accounts

ordinary user

Create an Ordinary User
 | Create an Ordinary User

permissions

Permissions
 | Permissions

example sessions

Permissions in Practice
 | Permissions in Practice
 | Permissions in Practice

file mode

Mode
 | Mode
 | Mode

file ownership

File Ownership
 | File Ownership

root user

Working as Root
 | Working as Root

superuser

Set the Root Password

user

logging in

First Steps
 | First Steps

plans

Managing Your Identity
 | Managing Your Identity

Acknowledgments

no title

activating

swap partition

Initialize and Activate a
 | Initialize and Activate a

ae

no title

ae (text editor)

Text Editors
 | Using ae

alias

Aliases

aliases

Aliases

Alt key

Conventions
 | Conventions

APM

Shutting Down

APM (Advanced Power Management)

Shutting Down

application software

What Is Debian?

applications

cfdisk

Partition a Hard Disk
 | Partition a Hard Disk

configuration files

Configuration Files

dbootstrap

Step-by-Step Installation

network configuration

Configure the Network

dselect

Select and Install Profiles
 | Introduction
 | Introduction

Access screen

Access

multi-CD installation

Access

multi-NFS, multi-mount installation

Access

package states

Select
 | Select

Update screen

Update
 | Select
 | Select
 | Select
 | Select

exiting

How to Read This

file managers

Introduction to X

GNU documentation viewer

Using <TT>info</TT>
 | Using <TT>info</TT>

gzip

File Compression with <TT>gzip</TT>
 | File Compression with <TT>gzip</TT>

multitasking

A Multiuser, Multitasking Operating

system binaries

Files Present and Their

tasks

Select and Install Profiles
 | Select and Install Profiles

text editores

Text Editors
 | Text Editors

text editors

ae

Using ae

archiving utilities

Backup Tools

arguments

The Command Line and

arranging

hard drive

Partitioning Your Hard Drive
 | Background
 | Background

asking technical questions

Personal Help
 | Tips for asking questions

assigning

job numbers to command lines

Managing Processes with <TT>bash</TT>

authentication

shadow passwords

Shadow Password Support

automatic filesystem mounting

<TT>/etc/fstab</TT>: Automating the Mount
 | <TT>/etc/fstab</TT>: Automating the Mount

backing up

disks

Last Chance to Back

backups

performing

Before You Start

utilities

Backup Tools

GNU tar

<TT>tar</TT>

base system

no title
 | no title

configuring

Debian Installation Steps
 | Choosing Your Installation Media

installation

Install the Base System
 | Configure the Base System

bash

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

commands

aliases

Aliases

environment variables

setting

Environment Variables
 | Environment Variables

Info help system

displaying

Managing Processes with <TT>bash</TT>

binary executables

comparing to source code

Viewing Text Files

binary files

Working with Text Files

viewing

Viewing Text Files

BIOS (Basic Input/Output System)

Booting the System

black-and-white display

selecting

Select Color or Monochrome

block devices

Device Files
 | <TT>/dev/null</TT>

blocks

Device Files

bold face

typographical conventions

Conventions

boot floppies

creating

Make a Boot Floppy

boot loaders

Before You Start

LILO

Make Linux Bootable Directly

boot partition

PC Disk Limitations

boot process

LILO (Linux Loader)

Booting the System

query process

Booting the System

troubleshooting

Troubleshooting the Boot Process

booting

Debian

Booting Debian

from CD-ROM

Choosing Your Installation Media

from floppies

Booting from Floppies

operating systems

multiple

Make Linux Bootable Directly

smoke test

The Moment of Truth

Bourne shell

The Shell

bug reports

submitting

Troubleshooting the Boot Process

built-in dependencies

packages

Select
 | Select

built-in programs

Where Commands Reside: The

buttons

mouse operation

The Mouse

C shell

The Shell

canceling

selections (dselect)

Select

cd

<TT>Using Files: A Tutorial</TT>

cd command

Using Files: A Tutorial
 | Using Files: A Tutorial

CD-ROM

booting from

Choosing Your Installation Media

CD-ROMs

mounting

Example: Mounting a CD-ROM
 | Example: Mounting a CD-ROM

unmounting

Example: Mounting a CD-ROM

CDs

multi-CD installation

Access
 | Access

multi-NFS, multi-mount installation

Access

cfdisk

Partition a Hard Disk
 | Partition a Hard Disk
 | Partition a Hard Disk

Change Directory

see  cd

character devices

Device Files
 | <TT>/dev/null</TT>

characters

metacharacters

Regular Expressions

clients

X clients

Introduction to X

network transparency

Introduction to X

X windows system

X Clients
 | X Clients

selecting

Customizing Your X Startup
 | Customizing Your X Startup

closing

programs

How to Read This

color display

selecting

Select Color or Monochrome

Comand Line

History

no title

command history

Command History and Editing

command line

Command History and Editing
 | Command History and Editing
 | no title
 | Describing the Command Line
 | Describing the Command Line

structure

The Command Line and

command lines

job numbers

assigning

Managing Processes with <TT>bash</TT>

command-line shell

The Shell
 | The Shell

commands

aliases

Aliases

arguments

The Command Line and

Bash

wildcards

Tab Completion

cd

Using Files: A Tutorial
 | Using Files: A Tutorial

documentation

Kinds of Documentation
 | Kinds of Documentation

info

Using <TT>info</TT>
 | Using <TT>info</TT>

egrep

Regular Expressions

ls

Using Files: A Tutorial
 | Using Files: A Tutorial
 | Dot Files and <TT>ls -a</TT>

man less

Environment Variables

mkdir

Using Files: A Tutorial

more

Using Files: A Tutorial

parameters

The Command Line and

shell commands

typing

First Steps

su

Working as Root

whoami

Working as Root

commercial software

comparing to proprietary

What Is Free Software?

comparing

binary and text files

Viewing Text Files

crackers and hackers

What Is Free Software?

hard links and symlinks

Symbolic Links

programs and processes

Processes

software

commercial and proprietary

What Is Free Software?

system-wide and user-specific configuration

System-Wide Versus User-Specific Configuration
 | System-Wide Versus User-Specific Configuration

compiling

packages

Compiling Software

compressing

files

File Compression with <TT>gzip</TT>
 | File Compression with <TT>gzip</TT>

Configuration

Base system

no title

comparing system-wide and user-specific

System-Wide Versus User-Specific Configuration
 | System-Wide Versus User-Specific Configuration

Device drivers

no title

Modules

no title

networking

Ethernet

Ethernet

PPP

The Easy Way: <TT>wvdial</TT>
 | The Easy Way: <TT>wvdial</TT>

PCMCIA

no title
 | Configure PCMCIA Support

system-wide

/etc directory

Files Present and Their

automatic filesystem mounting

<TT>/etc/fstab</TT>: Automating the Mount
 | <TT>/etc/fstab</TT>: Automating the Mount

networking

Networking
 | PPP
 | Preparation

user-specific

dotfiles

System-Wide Versus User-Specific Configuration

configuring

base system

Debian Installation Steps
 | Choosing Your Installation Media

device drivers

Configure Device Driver Modules

keyboard

Configure the Keyboard

network

Configure the Network

packages

Configure

connections

networking

Ethernet

Ethernet

PPP

PPP
 | Preparation
 | The Easy Way: <TT>wvdial</TT>
 | The Easy Way: <TT>wvdial</TT>

consoles

A Multiuser, Multitasking Operating

virtual consoles

Virtual Consoles
 | Virtual Consoles

controllers

SCSI

partitions, naming

Device Names in Linux

controlling

processes

The Shell
 | The Shell

conventions

typographical

Conventions
 | Conventions

spaces

Conventions

copy-and-paste

mouse operation (X)

The Mouse

copying

large-scale

Large-Scale Copying
 | Large-Scale Copying

crackers

comparing to hackers

What Is Free Software?

creating

accounts

ordinary user

Create an Ordinary User
 | Create an Ordinary User

superuser

Set the Root Password

directories

Using Files: A Tutorial

disk images

Creating Floppies from Disk
 | Creating Floppies from Disk

plans

Managing Your Identity
 | Managing Your Identity

csh (C shell)

The Shell

current working directories

Using Files: A Tutorial

Current Working Directory

Using Files: A Tutorial

customizing

X windows system

Customizing Your X Startup

cylinder translation

PC Disk Limitations

daemon

Processes

dbootstrap

Step-by-Step Installation

network configuration

Configure the Network

Debian

booting

Booting Debian

from CD-ROM

Choosing Your Installation Media

Web site

What Is Free Software?

Debian base system

Debian Installation Steps
 | Choosing Your Installation Media

Debian mailing list

Personal Help
 | Personal Help

deleting

directories

Using Files: A Tutorial

files

Using Files: A Tutorial

hard links

The Real Nature of

named pipes

Named Pipes (FIFOs)

symlinks

Symbolic Links
 | Symbolic Links

Deleting Files

see  rm

dependencies

packages

Select
 | Select

deselect

package maintenance

<TT>dselect</TT>

Devel_comp (profile)

Planning Use of the

developing

Free Software

Social Contract

What Is Free Software?

software

free software

What Is Free Software?
 | What Is Free Software?

development

Who Creates Debian?

device drivers

configuring

Configure Device Driver Modules

device files

Device Files
 | <TT>/dev/null</TT>

Device Names

no title

devices

Device Names in Linux
 | Device Names in Linux

abstractions

Introduction to X

base system

installing

Install the Base System
 | Configure the Base System

block devices

Device Files
 | <TT>/dev/null</TT>

character devices

Device Files
 | <TT>/dev/null</TT>

daemons

Processes

files

symlinks

Symbolic Links

filesystems

Concepts

automatic mounting

<TT>/etc/fstab</TT>: Automating the Mount
 | <TT>/etc/fstab</TT>: Automating the Mount

hard links

The Real Nature of
 | The Real Nature of

mount points

Mounting a Filesystem

mounting

Mounting a Filesystem
 | Mounting a Filesystem
 | Example: Mounting a CD-ROM
 | Example: Mounting a CD-ROM
 | Removable Disks (Floppies, Zip

proc

The <TT>proc</TT> Filesystem

symlinks

Symbolic Links
 | Symbolic Links
 | Symbolic Links

naming

Device Names in Linux

output

redirecting

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and
 | <TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

PCMCIA

configuring

Configure PCMCIA Support

printers

troubleshooting

Printing

SCSI drives

partitions

Device Names in Linux

swap partitions

Recommended Partitioning Scheme
 | Recommended Partitioning Scheme

Dialup profile

Planning Use of the

Directories

no title
 | Files and Directories
 | Files and Directories
 | Files and Directories
 | Files Present and Their

/etc

Files Present and Their
 | Files Present and Their
 | Files Present and Their

system-wide configuration

System-Wide Versus User-Specific Configuration
 | System-Wide Versus User-Specific Configuration

/root

Files Present and Their

/tmp

Files Present and Their

/user

Files Present and Their

/var

Files Present and Their

contents, displaying

Files Present and Their
 | Files Present and Their

copying

Large-Scale Copying
 | Large-Scale Copying

creating

Using Files: A Tutorial

current working directory

Using Files: A Tutorial

file systems

mount points

Mounting a Filesystem

filename expansion patterns

Filename Expansion
 | Filename Expansion

files

hard links

The Real Nature of
 | The Real Nature of

inodes

The Real Nature of
 | The Real Nature of

locating

Finding Files
 | Finding Files

symlinks

Symbolic Links

filesystems

Concepts

mounting

Mounting a Filesystem
 | Mounting a Filesystem
 | Example: Mounting a CD-ROM
 | Example: Mounting a CD-ROM
 | Removable Disks (Floppies, Zip

hard links

removing

The Real Nature of

home directory

Files Present and Their

modes

Mode

parent directories

Using Files: A Tutorial

paths

Files and Directories

permissions

example session

Permissions in Practice
 | Permissions in Practice
 | Permissions in Practice

removing

Using Files: A Tutorial

search path (shell)

Where Commands Reside: The
 | Where Commands Reside: The

shortcut directories

Using Files: A Tutorial

symlinks

Symbolic Links

system-wide

files, modifying

Files Present and Their

disk blocks

scanning

Initialize and Activate a

disk cache

Shutting Down

disk space

installation requirements

Memory and Disk Space

disks

backing up

Last Chance to Back

boot disks

LILO

Booting the System

boot floppies

creating

Make a Boot Floppy

filesystems

mount points

Mounting a Filesystem

mounting

Mounting a Filesystem
 | Mounting a Filesystem
 | Example: Mounting a CD-ROM
 | Example: Mounting a CD-ROM
 | Removable Disks (Floppies, Zip

floppies

booting from

Booting from Floppies

images

writing to floppies

Creating Floppies from Disk
 | Creating Floppies from Disk

removable

mounting filesystem

Removable Disks (Floppies, Zip

displaying

directory contents

Files Present and Their
 | Files Present and Their

file contents

Determining a File's Contents

files

filename expansion pattern

Filename Expansion

Info help system

Managing Processes with <TT>bash</TT>

mounted filesystems

Example: Mounting a CD-ROM

text files

Viewing Text Files

displays

ae (text editor)

Using ae

dselect

Access screen

Access

X windows system

windows manager

Introduction to X

dividing

partitions

Lossless Repartitioning

documentation

Kinds of Documentation
 | Kinds of Documentation

GNU General Public License

The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public

HOWTOs

HOWTOs

info

Using <TT>info</TT>
 | Using <TT>info</TT>

DOS (Disk Operating System)

partitioning

Partitioning from DOS or
 | Lossless Repartitioning
 | Debian Installation Steps

Dotfiles

no title
 | Dot Files and <TT>ls -a</TT>
 | System-Wide Versus User-Specific Configuration

dpkg

no title

package maintenance

<TT>dpkg</TT>

dselect

Select and Install Profiles
 | no title
 | Introduction
 | Introduction
 | Access
 | no title

Access menu

no title

Access screen

Access

multi-CD installation

Access

package states

Select
 | Select

packages

configuring

Configure

installing

Install
 | Install

Select

no title

Select screen

Select
 | Select
 | Select
 | Select
 | Select

exiting

Select

Update

no title

Update screen

Update

dump

Backup Tools

dump (backup utility

Backup Tools

editing

text

Text Editors
 | Text Editors

Editors

no title

egrep command

Regular Expressions

Emacs (text editor)

Text Editors
 | Text Editors

email

bug reports

troubleshooting

Troubleshooting the Boot Process

Debian mailing list

Personal Help
 | Personal Help

environment

variables

importing

Environment Variables

environment variables

no title
 | Environment Variables

bash

setting

Environment Variables
 | Environment Variables

PATH

Where Commands Reside: The
 | Where Commands Reside: The

proxy servers

setting

Access

environments

Environment Variables

error messages

standard error

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

X windows system

troubleshooting

Troubleshooting

Ethernet

configuration

Ethernet

example session

permissions

Permissions in Practice
 | Permissions in Practice
 | Permissions in Practice

execute permission

Mode

executing

programs

search path

Where Commands Reside: The
 | Where Commands Reside: The

exiting

ae (text editor)

Using ae

programs

How to Read This

Select screen (dselect)

Select

X windows system

Leaving the X Environment
 | Customizing Your X Startup
 | Customizing Your X Startup

expansion patterns

Filename Expansion
 | Filename Expansion

see also wildcards

Filename Expansion

exporting

shell variables

Environment Variables

variables to environment

Environment Variables

ext2 filesystem

Concepts

extended partitions

PC Disk Limitations
 | Device Names in Linux

FIFO (first-in-first-out)

Named Pipes (FIFOs)

file manager

Using a File Manager

file managers

icon-based

Introduction to X

file pagers

text files

viewing

Viewing Text Files

file systems

Partitioning Your Hard Drive
 | Background
 | Background

filename expansion pattern

Filename Expansion

filename expansion patterns

Filename Expansion

files

no title
 | Files and Directories
 | Files and Directories
 | Files and Directories

/etc/X11/Xsession

modifying

Customizing Your X Startup

access

Mode

binary

Working with Text Files

viewing

Viewing Text Files

compressing

File Compression with <TT>gzip</TT>
 | File Compression with <TT>gzip</TT>

configuration files

Configuration Files

contents

displaying

Determining a File's Contents

current working directory

Using Files: A Tutorial

deleting

Using Files: A Tutorial

device files

Device Files
 | <TT>/dev/null</TT>

disk images

Creating Floppies from Disk
 | Creating Floppies from Disk

dotfiles

Dot Files and <TT>ls -a</TT>
 | System-Wide Versus User-Specific Configuration

Editors

no title

hard links

The Real Nature of
 | The Real Nature of

inodes

The Real Nature of

large-scale copying

Large-Scale Copying
 | Large-Scale Copying

locating

Finding Files
 | Finding Files

moving

Using Files: A Tutorial

named pipes

Named Pipes (FIFOs)

naming conventions

troubleshooting

Working with Strangely-Named Files

permissions

Permissions
 | Permissions
 | Security

example sessions

Permissions in Practice
 | Permissions in Practice
 | Permissions in Practice

mode

Mode
 | Mode
 | Mode

ownership

File Ownership
 | File Ownership

plans

creating

Managing Your Identity
 | Managing Your Identity

regular expressions

Regular Expressions
 | Regular Expressions
 | Regular Expressions

sockets

Sockets

symlinks

Symbolic Links

removing

Symbolic Links
 | Symbolic Links

temporary

Files Present and Their

Text

no title

editing

Text Editors
 | Text Editors
 | Using ae

viewing

Viewing Text Files

text files

Working with Text Files

uncompressing

File Compression with <TT>gzip</TT>

filesystems

Filesystems

automatic mounting

<TT>/etc/fstab</TT>: Automating the Mount
 | <TT>/etc/fstab</TT>: Automating the Mount

backing up

Backup Tools

GNU tar

<TT>tar</TT>

ext2

Concepts

hard links

The Real Nature of
 | The Real Nature of

deleting

The Real Nature of

listing

Example: Mounting a CD-ROM

mount points

Mounting a Filesystem

mounting

Mounting a Filesystem
 | Mounting a Filesystem
 | Example: Mounting a CD-ROM
 | Example: Mounting a CD-ROM
 | Removable Disks (Floppies, Zip

proc

The <TT>proc</TT> Filesystem

symlinks

Symbolic Links

finding

documentation

Kinds of Documentation
 | Kinds of Documentation

files

Finding Files
 | Finding Files

system information

Getting Information from the

finger information

plans

creating

Managing Your Identity

FIPS

Lossless Repartitioning
 | Lossless Repartitioning

floppies

boot floppies

creating

Make a Boot Floppy

booting from

Booting from Floppies

disk images

writing

Creating Floppies from Disk
 | Creating Floppies from Disk

filesystem

mounting

Removable Disks (Floppies, Zip

filesystems

Mounting a Filesystem

Floppy Disks

no title

fonts

selecting

Starting the X Environment

xterm

increasing size

Starting the X Environment

Free Software

What Is Free Software?

developing

What Is Free Software?

Social Contract

What Is Free Software?

Free Software Foundation

What Is Free Software?

fully-qualified filenames

Files and Directories

functionality

What Is Debian?

General Public License

The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public

glossary

Glossary

GNOME desktop project

Introduction to X

GNU documentation viewer

Using <TT>info</TT>
 | Using <TT>info</TT>

GNU General Public License

The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public

GNU Midnight Commander

Using a File Manager

GNU Project

What Is Debian?

GNU tar

<TT>tar</TT>

GNU tar (backup utility

Backup Tools

GNU/Linux

multiuser environment

A Multiuser, Multitasking Operating

graphical user interfaces

see GUIs

The X Window System
 | Introduction to X

GUIs

abstractions

Introduction to X

icon-based file managers

Introduction to X

X Window

The X Window System
 | Introduction to X

X windows system

clients

X Clients
 | X Clients

clients, selecting

Customizing Your X Startup
 | Customizing Your X Startup

customizing

Customizing Your X Startup

exiting

Leaving the X Environment
 | Customizing Your X Startup
 | Customizing Your X Startup

mouse operation

The Mouse

starting

Starting the X Environment

troubleshooting

Troubleshooting
 | X Problems

xdm

Starting the X Environment

gzip

File Compression with <TT>gzip</TT>
 | File Compression with <TT>gzip</TT>

Hacker Ethic

What Is Free Software?

hackers

What Is Free Software?

hard disk

Linux partition

initializing

Initialize a Linux Partition
 | Initialize a Linux Partition

partitioning

PC BIOS

PC Disk Limitations

swap partition

initializing

Initialize and Activate a
 | Initialize and Activate a

hard disks

partitioning

Lossless Repartitioning
 | Debian Installation Steps
 | Partition a Hard Disk
 | Partition a Hard Disk

partitions

mounting

Initialize a Linux Partition

scanning

Initialize and Activate a

hard drive

organizing

Partitioning Your Hard Drive
 | Background
 | Background

partition

boot partition

PC Disk Limitations

partitioning

Partitioning Your Hard Drive
 | Background
 | Background

cylinder translation

PC Disk Limitations

root partition

Background

swap partition

Background

hard drives

filesystems

Mounting a Filesystem

LILO

operating system, booting

Booting the System

partitioning

swap partitions

Recommended Partitioning Scheme
 | Recommended Partitioning Scheme

partitions

mounting

Mount a Previously-Initialized Partition

hard links

The Real Nature of
 | The Real Nature of

comparing to symlinks

Symbolic Links
 | Symbolic Links

deleting

The Real Nature of

symlinks

Symbolic Links

hardware

abstractions

Introduction to X

device files

Device Files
 | <TT>/dev/null</TT>

video cards

support for

Supported Hardware

Hardware, supported

no title

Help file (installation)

accessing

Select

help system

HOWTOs

HOWTOs

hierarchies

Concepts

filesystems

Concepts

mount points

Mounting a Filesystem

mounting

Mounting a Filesystem
 | Mounting a Filesystem
 | Example: Mounting a CD-ROM
 | Example: Mounting a CD-ROM
 | Removable Disks (Floppies, Zip

History

see  Command Line History

home directories

Files Present and Their

home directory

Using Files: A Tutorial

HOWTOs

HOWTOs

icon-based file managers

Introduction to X

images (disk)

writing to floppies

Creating Floppies from Disk
 | Creating Floppies from Disk

importing

variables to environment

Environment Variables

info

<TT>no title</TT>
 | Using <TT>info</TT>
 | Using <TT>info</TT>

Info help system

Managing Processes with <TT>bash</TT>

initializing

Linux partition

Initialize a Linux Partition
 | Initialize a Linux Partition

swap partition

Initialize and Activate a
 | Initialize and Activate a

inodes

The Real Nature of
 | The Real Nature of

hard links

removing

The Real Nature of

Installation

backups, performing

Before You Start

base system

Install the Base System
 | Configure the Base System

base system, configuring

Debian Installation Steps
 | Choosing Your Installation Media

boot floppies

creating

Make a Boot Floppy

CD-ROM

no title

device drivers

configuring

Configure Device Driver Modules

disks

backing up

Last Chance to Back

dselect

Introduction

Access screen

Access

Floppies

no title

hard disks

partitioning

Partition a Hard Disk
 | Partition a Hard Disk

hard drive

 partitioning

Background
 | Background

partitioning

Partitioning Your Hard Drive

Help file

accessing

Select

kernel

Install Operating System Kernel

keyboard configuration

Configure the Keyboard

Linux partition

initialization

Initialize a Linux Partition
 | Initialize a Linux Partition

main menu

Debian GNU/Linux Installation Main

master boot record

Make Linux Bootable Directly

Media

no title

memory requirements

Memory and Disk Space

Menu

no title

monitor display

color, selecting

Select Color or Monochrome

multi-NFS, multi-mount

Access

multi_cd

Access
 | Access

network

configuring

Configure the Network

packages

Package Installation with <TT>dselect</TT>

partitioning

Partitioning Prior to Installation
 | Partitioning from DOS or
 | Lossless Repartitioning
 | Debian Installation Steps

PCMCIA support

configuring

Configure PCMCIA Support

Prerequisites

no title

profiles

Planning Use of the

selecting

Select and Install Profiles

root password

setting

Set the Root Password

smoke test

The Moment of Truth

swap partition

initialization

Initialize and Activate a
 | Initialize and Activate a

tasks

selecting

Select and Install Profiles

time zone

specifying

Configure the Base System

installations

network workstations

Information You Will Need

operating systems, multiple

Before You Start

installing

packages

Install
 | Install

Internet

Debian mailing list

Personal Help
 | Personal Help

online manual

viewing

Environment Variables

IRC (Internet Relay Chat)

Debian mailing list

Personal Help
 | Personal Help

ISPs

PPP

PPP
 | Preparation

italics

typographical conventions

Conventions

job

Managing Processes with <TT>bash</TT>

job numbers

assigning to command lines

Managing Processes with <TT>bash</TT>

jobs

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

listing

Managing Processes with <TT>bash</TT>

starting

Managing Processes with <TT>bash</TT>

status

displaying

Managing Processes with <TT>bash</TT>

suspending

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

terminating

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

kernel

boot process

troubleshooting

Troubleshooting the Boot Process

installing

Install Operating System Kernel

PCMCIA

removing

Remove PCMCIA

virtual consoles

Virtual Consoles
 | Virtual Consoles

kernel:LILO (Linux Loader)

Booting the System
 | Booting the System

key combinations

dselect

Select

keyboard

configuring

Configure the Keyboard

killing

jobs

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

X server

Leaving the X Environment

Korn shell

The Shell

languages

programming

Software Development with Debian
 | Software Development with Debian

LANs

Ethernet

configuration

Ethernet

large-scale copying

Large-Scale Copying
 | Large-Scale Copying

legal documentation

GNU General Public License

The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public

licenses

GNU General Public License

The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public

LILO

Make Linux Bootable Directly

LILO (Linux Loader)

Booting the System
 | Booting the System

limitations

partitions

PC Disk Limitations

Linux

devices

Device Names in Linux
 | Device Names in Linux
 | Device Names in Linux

GNU General Public License

The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public
 | The GNU General Public

kernel

command line

Describing the Command Line
 | Describing the Command Line

disk cache

Shutting Down

virtual console

Virtual Consoles
 | Virtual Consoles

Linux Documentation Project

Supported Hardware

HOWTOs

HOWTOs

Linux native partition

creating

Partition a Hard Disk
 | Partition a Hard Disk

Linux partition

initializing

Initialize a Linux Partition
 | Initialize a Linux Partition

Linux partitions

mounting

Initialize a Linux Partition
 | Initialize a Linux Partition

Linux swap partition

creating

Partition a Hard Disk
 | Partition a Hard Disk

listing

aliases

Aliases

jobs

Managing Processes with <TT>bash</TT>

mounted filesystems

Example: Mounting a CD-ROM

processes

Processes

locating

documentation

Kinds of Documentation
 | Kinds of Documentation

files

Finding Files
 | Finding Files

system information

Getting Information from the

logging in

First Steps
 | First Steps

logical partitions

PC Disk Limitations
 | Device Names in Linux

long form

options

The Command Line and

ls

<TT>Using Files: A Tutorial</TT>
 | <TT>no title</TT>

ls command

Using Files: A Tutorial
 | Using Files: A Tutorial
 | Dot Files and <TT>ls -a</TT>

mailing list

Debian

Personal Help
 | Personal Help

main menu

installation

Debian GNU/Linux Installation Main

mainenance

packages

What a Package Maintenance
 | What a Package Maintenance

deselect

<TT>dselect</TT>

dpkg

<TT>dpkg</TT>

man less command

Environment Variables

man pages

The Command Line and

managing

files

Using a File Manager

manual startup

X windows system

Starting the X Environment

master boot record

installation

Make Linux Bootable Directly

memory

disk cache

Shutting Down

installation requirements

Memory and Disk Space

swap partitions

Recommended Partitioning Scheme
 | Recommended Partitioning Scheme

menus

installation

Debian GNU/Linux Installation Main

Partition a Hard Disk

Partition a Hard Disk
 | Partition a Hard Disk

messages

error

standard error

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

metacharacters

regular expressions

Regular Expressions
 | Regular Expressions
 | Regular Expressions

mkdir command

Using Files: A Tutorial

mode (files)

Mode
 | Mode
 | Mode

modifier keys

Conventions
 | Conventions

modifying

files

hard links

The Real Nature of

modularity

Introduction to X

modules

device drivers

configuring

Configure Device Driver Modules

installation

Install Operating System Kernel

monitor

display color

selecting

Select Color or Monochrome

monochrome display

selecting

Select Color or Monochrome

more command

Using Files: A Tutorial

mount points

Mounting a Filesystem

mounting

CD-ROM

Example: Mounting a CD-ROM
 | Example: Mounting a CD-ROM

filesystems

Mounting a Filesystem
 | Mounting a Filesystem
 | Example: Mounting a CD-ROM
 | Example: Mounting a CD-ROM
 | Removable Disks (Floppies, Zip

automatic

<TT>/etc/fstab</TT>: Automating the Mount
 | <TT>/etc/fstab</TT>: Automating the Mount

floppy disks

Removable Disks (Floppies, Zip

initialized partitions

Mount a Previously-Initialized Partition

partitions

Initialize a Linux Partition
 | Initialize a Linux Partition

mouse operation

X windows system

The Mouse

moving

files

Using Files: A Tutorial

msdos filesystem

Concepts

multi-NFS, multi-mount installation

Access

multi_cd installation

Access
 | Access

multiple operating systems

booting

Make Linux Bootable Directly

multitasking

A Multiuser, Multitasking Operating
 | A Multiuser, Multitasking Operating

processes

Processes

Multiuser

A Multiuser, Multitasking Operating

multiuser environment

GNU/Linux

A Multiuser, Multitasking Operating

multiuser environments

virtual console

Virtual Consoles
 | Virtual Consoles

mv command

Using Files: A Tutorial

named pipes

Named Pipes (FIFOs)

naming

devices

Device Names in Linux
 | Device Names in Linux
 | Device Names in Linux

naming conventions

files

troubleshooting

Working with Strangely-Named Files

navigating

dbootstrap

Step-by-Step Installation

nedit (text editor

Text Editors

netowrks

devices

output, redirecting

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and
 | <TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

network

configuring

Configure the Network

Network Configuration

no title

network transparency

Introduction to X

networking

Networking

Ethernet

configuration

Ethernet

PPP

PPP
 | Preparation

configuration

The Easy Way: <TT>wvdial</TT>
 | The Easy Way: <TT>wvdial</TT>

sockets

Sockets

networks

servers

partitioning

Recommended Partitioning Scheme

terminals

A Multiuser, Multitasking Operating

virtual console

Virtual Consoles
 | Virtual Consoles

workstations

installation

Information You Will Need

X servers

Introduction to X

online manual

builtin programs

Where Commands Reside: The

text, paging

Environment Variables

viewing

Environment Variables

Open Source Software

What Is Free Software?

operating system

booting

LILO (Linux Loader)

Booting the System

kernel

installing

Install Operating System Kernel

operating systems

What Is Debian?

backup tools

Backup Tools

GNU tar

<TT>tar</TT>

boot loaders

Before You Start

Debian

booting

Booting Debian

functionality

What Is Debian?

GNU Linux

multiuser environment

A Multiuser, Multitasking Operating

installation

partitioning

Partitioning Prior to Installation
 | Partitioning from DOS or
 | Lossless Repartitioning
 | Debian Installation Steps

LILO

Make Linux Bootable Directly

modularity

Introduction to X

multiple installations

Before You Start

multiple, booting

Make Linux Bootable Directly

root password

setting

Set the Root Password

swap partitions

Background

X windows system

troubleshooting

X Problems

options (commands)

The Command Line and

ordinary user accounts

Create an Ordinary User
 | Create an Ordinary User

organization

files

Files and Directories
 | Files and Directories

organizing

files

Concepts

hard drive

Partitioning Your Hard Drive
 | Background
 | Background

ouput

redirecting

pipelines

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

output

redirecting

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and
 | <TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and
 | <TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

reversing

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

overriding

package dependencies

Select

ownership (files)

File Ownership
 | File Ownership

packages

Glossary

canceling selection (dselect)

Select

compiling

Compiling Software

configuring

Configure

Debian base system

Debian Installation Steps
 | Choosing Your Installation Media

dependencies

Select
 | Select

development

Who Creates Debian?

installation

Package Installation with <TT>dselect</TT>

multi-CD

Access
 | Access

multi-NFS, multi-mount

Access

installing

Install
 | Install

maintenance utilities

What a Package Maintenance
 | What a Package Maintenance

deselect

<TT>dselect</TT>

dpkg

<TT>dpkg</TT>

profiles

Planning Use of the

see also dselect

Introduction
 | Introduction

selecting

Select and Install Profiles
 | Select
 | Select
 | Select

states (dselect)

Select
 | Select

PAGER environment variable

Environment Variables

parameters

The Command Line and

parent directories

Using Files: A Tutorial

partition

boot partition

PC Disk Limitations

Initialization

no title

Swap

no title

Lossless

no title

Partitioning

no title
 | Device Names in Linux

cylinder translation

PC Disk Limitations

hard disks

Partition a Hard Disk
 | Partition a Hard Disk

hard drive

Partitioning Your Hard Drive
 | Background
 | Background

root partition

Background

swap partition

Background

Linux partition

initializing

Initialize a Linux Partition
 | Initialize a Linux Partition

PC BIOS

PC Disk Limitations

SCSI drives

PC Disk Limitations

servers

Recommended Partitioning Scheme

swap partition

initializing

Initialize and Activate a
 | Initialize and Activate a

swap partitions

Recommended Partitioning Scheme
 | Recommended Partitioning Scheme

partitions

mounting

Initialize a Linux Partition
 | Initialize a Linux Partition
 | Mount a Previously-Initialized Partition

surface scanning

Initialize and Activate a

passwords

logging in

First Steps
 | First Steps

root password

setting

Set the Root Password

shadow passwords

Shadow Password Support

superuser

Working as Root

PATH

no title

paths

Files and Directories

PC BIOS

PC Disk Limitations

PCMCIA

no title

configuring

Configure PCMCIA Support

removing

Remove PCMCIA

Permissions

no title
 | Permissions
 | Permissions
 | Security

access

Mode

example session

Permissions in Practice
 | Permissions in Practice
 | Permissions in Practice

file ownership

File Ownership
 | File Ownership

hard links

The Real Nature of

mode

Mode
 | Mode
 | Mode

PID

Processes

PID (Process Identification Number)

Processes

pipe operators

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

pipeline

Managing Processes with <TT>bash</TT>

pipelines

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

output

reversing

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

pipes

named pipes

Named Pipes (FIFOs)

plans

Managing Your Identity
 | Managing Your Identity

PPP

configuration

PPP
 | Preparation

wvdial

The Easy Way: <TT>wvdial</TT>
 | The Easy Way: <TT>wvdial</TT>

primary partitions

PC Disk Limitations

printenv

Environment Variables
 | Environment Variables

Printing

no title

troubleshooting

Printing

proc filesystem

The <TT>proc</TT> Filesystem

process groups

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

Process Management

no title

Processes

no title
 | Processes

boot process

troubleshooting

Troubleshooting the Boot Process

comparing to programs

Processes

controlling

The Shell
 | The Shell

daemons

Processes

environments

Environment Variables

jobs

listing

Managing Processes with <TT>bash</TT>

starting

Managing Processes with <TT>bash</TT>

suspending

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

terminating

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

named pipes

Named Pipes (FIFOs)

PID (Process Identification Number)

Processes

redirection operators

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and
 | <TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

standard input

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

standard output

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

profiles

Planning Use of the
 | Planning Use of the

selecting

Select and Install Profiles
 | Select and Install Profiles

programming

Software Development with Debian
 | Software Development with Debian

programs

bash

aliases

Aliases

BIOS (Basic Input/Output System)

Booting the System

built-in

Where Commands Reside: The

cfdisk

Partition a Hard Disk
 | Partition a Hard Disk

comparing to processes

Processes

dbootstrap

Step-by-Step Installation

network configuration

Configure the Network

dselect

Select and Install Profiles
 | Introduction
 | Introduction

Access screen

Access

multi-CD installation

Access

multi-NFS, multi-mount installation

Access

package states

Select
 | Select

packages, configuring

Configure

packages, installing

Install
 | Install

Update screen

Update
 | Select
 | Select
 | Select
 | Select

executing

search path

Where Commands Reside: The
 | Where Commands Reside: The

exiting

How to Read This

file managers

Introduction to X

functionality

What Is Debian?

gzip

File Compression with <TT>gzip</TT>
 | File Compression with <TT>gzip</TT>

multitasking

A Multiuser, Multitasking Operating

packages

maintenance utilities

What a Package Maintenance
 | What a Package Maintenance
 | <TT>dpkg</TT>
 | <TT>dselect</TT>

shell

The Shell
 | The Shell

software development

Software Development with Debian
 | Software Development with Debian

tasks

Select and Install Profiles
 | Select and Install Profiles

text editors

Text Editors
 | Text Editors

ae

Using ae

wvdial

PPP configuration

The Easy Way: <TT>wvdial</TT>
 | The Easy Way: <TT>wvdial</TT>

X clients

X Clients
 | X Clients

Prompt, Changing

Environment Variables
 | Environment Variables

prompts

shell prompts

First Steps

proprietary software

comparing to commercial

What Is Free Software?

proxy servers

environment variables

setting

Access

PS1

Environment Variables
 | Environment Variables

pwd

<TT>Using Files: A Tutorial</TT>

pwd command

Using Files: A Tutorial
 | Using Files: A Tutorial

query process

Booting the System

questions

technical support

Personal Help
 | Tips for asking questions

quitting

ae (text editor)

Using ae

X windows system

Customizing Your X Startup
 | Customizing Your X Startup

RAM

disk cache

Shutting Down

RAM (Random Access Memory)

installation requirements

Memory and Disk Space

reading

device files

Device Files

redirecting

output

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

pipelines

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

Redirection

no title

redirection operators

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

hard links

The Real Nature of

output

reversing

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

regular expressions

Regular Expressions
 | Regular Expressions
 | Regular Expressions

reinitializing

swap partition

Initialize and Activate a

removable disks

mounting filesystem

Removable Disks (Floppies, Zip

removing

directories

Using Files: A Tutorial

hard links

The Real Nature of

PCMCIA

Remove PCMCIA

symlinks

Symbolic Links
 | Symbolic Links

repartitioning

from Windows

Partitioning from DOS or
 | Lossless Repartitioning

hard drive

Partitioning Your Hard Drive
 | Background
 | Background

requirements

installation

memory

Memory and Disk Space

restrictions

partitions

PC Disk Limitations

reversing

output

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

rm

<TT>Using Files: A Tutorial</TT>

root directory

Files and Directories
 | Files and Directories

root partition

Background

root password

setting

Set the Root Password

root user

Working as Root
 | Working as Root

see also superuser

Files Present and Their

saving

edited files (ae)

Using ae

scanning

hard disk

Initialize and Activate a

screen

display color

selecting

Select Color or Monochrome

screens

ae (text editor)

Using ae

dselect

Select

Select
 | Select
 | Select
 | Select
 | Select

Update

Update

X windows system

windows manager

Introduction to X

scrolling

commands

Command History and Editing

SCSI drives

partitioning

PC Disk Limitations

partitions

Device Names in Linux

search path

Where Commands Reside: The
 | Where Commands Reside: The

security

backups, performing

Before You Start

passwords

logging in

First Steps
 | First Steps

shadow passwords

Shadow Password Support

permissions

Permissions
 | Permissions
 | Security

example session

Permissions in Practice
 | Permissions in Practice
 | Permissions in Practice

file mode

Mode
 | Mode
 | Mode

file ownership

File Ownership
 | File Ownership

root password

setting

Set the Root Password

root user

Working as Root
 | Working as Root

Select screen (dselect)

Select
 | Select
 | Select
 | Select

selecting

color display

Select Color or Monochrome

fonts, xterm

Starting the X Environment

monochrome display

Select Color or Monochrome

packages

Select and Install Profiles
 | Select
 | Select
 | Select

see also dselect

Introduction
 | Introduction

profiles

Select and Install Profiles
 | Select and Install Profiles

X clients

Customizing Your X Startup
 | Customizing Your X Startup

Server profile

Planning Use of the

servers

partitioning

Recommended Partitioning Scheme

proxy servers

environment variables, setting

Access

X server

killing

Leaving the X Environment

X servers

Introduction to X

clients

X Clients
 | X Clients

network transparency

Introduction to X

sh (Bourne shell)

The Shell

shadow passwords

Shadow Password Support

sharing

software

What Is Free Software?
 | What Is Free Software?

Shell

no title
 | The Shell
 | The Shell
 | no title

built-in programs

Where Commands Reside: The

filename expansion patterns

Filename Expansion

output

reversing

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

redirection operator

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and
 | <TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

search path

Where Commands Reside: The
 | Where Commands Reside: The

shell commands

typing

First Steps

shell prompt

command history

Command History and Editing

command line

Command History and Editing
 | Command History and Editing

shells

Bourne shell

The Shell

C shell

The Shell

command lines

job numbers, assigning

Managing Processes with <TT>bash</TT>

current working directory

Using Files: A Tutorial

environments

Environment Variables

jobs

suspending

Managing Processes with <TT>bash</TT>

pipelines

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

process groups

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

redirection operators

hard links

The Real Nature of

variables

exporting

Environment Variables

xterms

Starting the X Environment

shortcut directories

Using Files: A Tutorial

shortcuts

aliases

Aliases

Shutdown

no title

shutting down

Shutting Down

sites

Web

Debian

What Is Free Software?

Free Software Foundation

What Is Free Software?

Multi Disk HOWTO

Recommended Partitioning Scheme

video cards, support for

Supported Hardware

smoke test

The Moment of Truth

Social Contract

What Is Free Software?
 | What Is Free Software?
 | What Is Free Software?

sockets

Sockets

soft links

Symbolic Links

software

applications

What Is Debian?

development

Who Creates Debian?

free

developing

What Is Free Software?

Social Contract

What Is Free Software?

Free Software

What Is Free Software?

Open Source

What Is Free Software?

packages

mainenance utilities

What a Package Maintenance
 | <TT>dpkg</TT>
 | <TT>dselect</TT>

sofware

development

Software Development with Debian
 | Software Development with Debian

Source code

Viewing Text Files

comparing to binary executables

Viewing Text Files

spaces

typographical convention

Conventions

specifying

time zone

Configure the Base System

splitting

partitions

Lossless Repartitioning

Stallman, Richard M.

Why Software Should be Free

What Is Free Software?

standard error

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

standard input

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

standard output

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

starting

ae (text editor)

Using ae

jobs

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

X windows system

Starting the X Environment

startup

boot process

BIOS

Booting the System

query process

Booting the System

X windows system

customizing

Customizing Your X Startup

states

packages (dselect)

Select
 | Select

status

jobs

displaying

Managing Processes with <TT>bash</TT>

stdin

no title

stdout

no title

structure

command line

The Command Line and

directories

Files and Directories

su command

Working as Root

subdirectories

filename expansion patterns

Filename Expansion
 | Filename Expansion

submitting

bug reports

Troubleshooting the Boot Process

superuser

Working as Root
 | Working as Root

home directory

Files Present and Their

superuser account

Set the Root Password

surface scanning

hard disks

Initialize and Activate a

suspending

jobs

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

swap partition

Background

initializing

Initialize and Activate a
 | Initialize and Activate a

swap partitions

Recommended Partitioning Scheme
 | Recommended Partitioning Scheme

Linux swap partition

creating

Partition a Hard Disk
 | Partition a Hard Disk

symlinks

Symbolic Links

comparing to hard links

Symbolic Links
 | Symbolic Links

removing

Symbolic Links

syntax

commands

The Command Line and
 | Describing the Command Line
 | Describing the Command Line

file searches

Finding Files

system binaries

Files Present and Their

system clock

setting

Configure the Base System

system configuration

Debian Installation Steps
 | Choosing Your Installation Media

dbootstrap

Step-by-Step Installation

system-wide configuration

System-Wide Versus User-Specific Configuration

/etc directory

Files Present and Their

automatic filesystem mounting

<TT>/etc/fstab</TT>: Automating the Mount
 | <TT>/etc/fstab</TT>: Automating the Mount

networking

Networking

Ethernet

Ethernet

PPP

PPP
 | Preparation
 | The Easy Way: <TT>wvdial</TT>
 | The Easy Way: <TT>wvdial</TT>

packages

selecting

Select
 | Select
 | Select

permissions

file mode

Mode
 | Mode
 | Mode

file ownership

File Ownership

X windows system

customizing

Customizing Your X Startup

system-wide configuratoin

System-Wide Versus User-Specific Configuration

Taper

Backup Tools

taper (backup utility)

Backup Tools

tar

Backup Tools
 | no title

tar (tape archiver

<TT>tar</TT>

tasks

Select and Install Profiles
 | Select and Install Profiles

tcsh

The Shell

technical support

asking questions

Personal Help
 | Tips for asking questions

temporary files

Files Present and Their

Terminal

A Multiuser, Multitasking Operating

terminals

A Multiuser, Multitasking Operating

consoles

A Multiuser, Multitasking Operating

terminating

jobs

Managing Processes with <TT>bash</TT>
 | Managing Processes with <TT>bash</TT>

testing

installation

smoke test

The Moment of Truth

text

bold face

typographical conventions

Conventions

fonts

xterm, selecting

Starting the X Environment

italicized

typographical conventions

Conventions

online manual

paging

Environment Variables

output

reversing

<TT>stdin</TT>, <TT>stdout</TT>, Pipelines, and

regular expressions

Regular Expressions
 | Regular Expressions
 | Regular Expressions

wildcards

-

Filename Expansion

?

Filename Expansion

file searches

Finding Files

filename expansion patterns

Filename Expansion

text editors

Text Editors

ae

Using ae

text files

Working with Text Files
 | no title

viewing

Viewing Text Files

time zone

specifying

Configure the Base System

tools

backups

Backup Tools

GNU tar

<TT>tar</TT>

FIPS

Lossless Repartitioning
 | Lossless Repartitioning

troubleshooting

boot process

Troubleshooting the Boot Process

files

naming conventions

Working with Strangely-Named Files

printing

Printing

X windows system

Troubleshooting
 | X Problems

type

Where Commands Reside: The

typing

Bash commands

wildcards

Tab Completion

command line

Command History and Editing
 | Command History and Editing

commands

aliases

Aliases

modifier keys

Conventions
 | Conventions

shell commands

First Steps

wildcards

?

Filename Expansion

filename expansion pattern

Filename Expansion

typographical conventions

Conventions
 | Conventions

bold face

Conventions

italics

Conventions

modifier keys

Conventions
 | Conventions

spaces

Conventions

uncompressing

files

File Compression with <TT>gzip</TT>

unmounting

CD-ROMs

Example: Mounting a CD-ROM

Update screen (dselect)

Update

user accounts

logging in

First Steps
 | First Steps

ordinary user

Create an Ordinary User
 | Create an Ordinary User

permission

Permissions
 | Permissions

permissions

example session

Permissions in Practice
 | Permissions in Practice
 | Permissions in Practice

file ownership

File Ownership
 | File Ownership

mode

Mode
 | Mode
 | Mode

plans

Managing Your Identity
 | Managing Your Identity

root user

Working as Root
 | Working as Root

superuser

Set the Root Password

user-specific configuration

System-Wide Versus User-Specific Configuration
 | System-Wide Versus User-Specific Configuration

dotfiles

System-Wide Versus User-Specific Configuration

utilities

archiving

Backup Tools

backup tools

Backup Tools

GNU tar

<TT>tar</TT>

dbootstrap

network configuration

Configure the Network

dselect

Select and Install Profiles
 | Introduction
 | Introduction

Access screen

Access

multi-CD installation

Access

multi-NFS, multi-mount installation

Access

package states

Select
 | Select

packages, configuring

Configure

packages, installing

Install
 | Install

Update screen

Update
 | Select
 | Select
 | Select
 | Select

file manager

Using a File Manager

FIPS

Lossless Repartitioning
 | Lossless Repartitioning

GNU documentation viewer

Using <TT>info</TT>
 | Using <TT>info</TT>

gzip

File Compression with <TT>gzip</TT>
 | File Compression with <TT>gzip</TT>

package maintenance

What a Package Maintenance
 | What a Package Maintenance

deselect

<TT>dselect</TT>

dpkg

<TT>dpkg</TT>

system binaries

Files Present and Their

tasks

Select and Install Profiles
 | Select and Install Profiles

text editors

Text Editors
 | Text Editors

ae

Using ae

variables

Environment Variables

exporting

Environment Variables

shell

exporting

Environment Variables

vi (text editor)

Text Editors
 | Text Editors

video cards

support for

Supported Hardware

viewing

directory contents

Files Present and Their
 | Files Present and Their

file contents

Using Files: A Tutorial
 | Determining a File's Contents

files

filename expansion pattern

Filename Expansion

Info help system

Managing Processes with <TT>bash</TT>

job status

Managing Processes with <TT>bash</TT>

mounted filesystems

Example: Mounting a CD-ROM

online manual

Environment Variables

text files

Viewing Text Files

Virtual Consoles

no title
 | Virtual Consoles
 | Virtual Consoles

virtual devices

Device Files
 | <TT>/dev/null</TT>

web sites

Debian

What Is Free Software?
 | Personal Help
 | Personal Help

Free Software Foundation

What Is Free Software?

Multi Disk HOWTO

Recommended Partitioning Scheme

Web sites:video cards, support for

Supported Hardware

whoami command

Working as Root

Why Software Should be Free (Stallman, Richard M.)

What Is Free Software?

wildcards

no title
 | Filename Expansion

*

Filename Expansion

?

Filename Expansion

Bash commands

Tab Completion

file searches

Finding Files

filename expansion pattens

Filename Expansion

regular expressions

Regular Expressions
 | Regular Expressions
 | Regular Expressions

window managers

Introduction to X

Windows

partitioning

Partitioning from DOS or
 | Lossless Repartitioning
 | Debian Installation Steps

Work profile

Planning Use of the

workstations

installation

Information You Will Need

write permission

Mode

writing

disk images to floppies

Creating Floppies from Disk
 | Creating Floppies from Disk

to device files

Device Files

to named pipes

Named Pipes (FIFOs)

wvdial

PPP configuration

The Easy Way: <TT>wvdial</TT>
 | The Easy Way: <TT>wvdial</TT>

X clients

Introduction to X

network transparency

Introduction to X

selecting

Customizing Your X Startup
 | Customizing Your X Startup

X servers

Introduction to X

X Window

The X Window System
 | Introduction to X

X windows system

clients

X Clients
 | X Clients

selecting

Customizing Your X Startup
 | Customizing Your X Startup

customizing

Customizing Your X Startup

exiting

Leaving the X Environment
 | Customizing Your X Startup
 | Customizing Your X Startup

mouse operation

The Mouse

network transparency

Introduction to X

starting

Starting the X Environment

troubleshooting

Troubleshooting
 | X Problems

xdm

Starting the X Environment

X, troubleshooting

no title

xcoral (text editor)

Text Editors

xdm (X Display Manager)

Starting the X Environment

xterm

font size, increasing

Starting the X Environment

fonts

selecting

Starting the X Environment

xterms

Starting the X Environment

Zip Disks

no title

<ADDRESS>
John Goerzen / Ossama Othman
</ADDRESS>


text:
/
#pragma once

// Nil is a C++/CX object and __alignof is a Microsoft specific operator so they need to be redefined for Objective C
#ifdef __OBJC__
#define Nil Nil2
#define __alignof alignof
#endif

#define BUILD_VARIABLE_NAME_INT(x, y) x##y
#define BUILD_VARIABLE_NAME(x, y) BUILD_VARIABLE_NAME_INT(x, y)

#define MEMBER_PARAMETER_TYPES_CONST_false
#define MEMBER_PARAMETER_TYPES_CONST_true const

#include "Windows.h"

#include <tuple>

// Copying these macros from WexTestClass.h, but not including
// it because it brings in dependencies on TAEF that we don't want
// in Unit Tests.

/// \internal
/// <summary> Wide string conversion helper </summary>
#ifndef TAEF_WIDEN_INT
#define TAEF_WIDEN_INT(x) L##x
#endif

/// \internal
/// <summary> Wide string version of "stringizing" operator </summary>
#ifndef TAEF_WIDEN
#define TAEF_WIDEN(x) TAEF_WIDEN_INT(x)
#endif

/// \internal
/// <summary>Wide string version of __FUNCTION__ macro </summary>
#ifndef TAEF__WFUNCTION__
#define TAEF__WFUNCTION__ TAEF_WIDEN(__FUNCTION__)
#endif

/// \internal
/// <summary>Stringize internal macro </summary>
#ifndef TAEF_STRINGIZE_INT
#define TAEF_STRINGIZE_INT(x) #x
#endif

/// \internal
/// <summary>Stringize macro </summary>
#ifndef TAEF_STRINGIZE
#define TAEF_STRINGIZE(x) TAEF_STRINGIZE_INT(x)
#endif

#include <functional>
#include <wrl/implements.h>
#include <wrl/client.h>

/*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
This header includes a number of macros that can be used to create mock classes for use in unit testing. The macros
follow the format of MOCK_METHOD_n(functionName), where "n" is the number of parameters and "functionName" is the
name of a function in one of the interfaces that the mock class implements.

Internally these macros will implement the interface methods given as well as create a Set[functionName]
setter per implemented function so that test code can set a custom C++ lambda that will be executed in place of
the given interface function.

Note: There are two sets of macros; one set for regular C++, and one set for high level C++/CX (see next section).

This is all best explained with some sample code:

struct Foo
{
int a;
int b;
};

struct Bar
{
int a;
int b;
};

class ISession
{
public:
virtual void VoidNoArgs() = 0;
virtual HRESULT AddMessageChannelListener(const Foo& foo) const = 0;
virtual HRESULT RemoveMessageChannelListener(const Bar& bar, const Foo& foo) = 0;
virtual HRESULT SendOnMessageChannel(const wchar_t* psz1, int x, char w, long long xyz) = 0;
};

MOCK_CLASS(MockSessionWithLambdas, public ISession
{
public:
MOCK_METHOD_0(VoidNoArgs);
MOCK_CONST_METHOD_1(AddMessageChannelListener);
MOCK_METHOD_2(RemoveMessageChannelListener);
MOCK_METHOD_4(SendOnMessageChannel);

MockSessionWithLambdas()
{
// Initialize callbacks
SetVoidNoArgs([]() { });
SetAddMessageChannelListener([](const Foo& foo){ return E_NOTIMPL; });
SetRemoveMessageChannelListener([](const Bar& bar, const Foo& foo){ return E_NOTIMPL; });
SetSendOnMessageChannel([](const wchar_t* psz1, int x, char w, long long xyz){ return E_NOTIMPL; });
}
});

TEST_METHOD(InterfaceMockingSample)
{
MockSessionWithLambdas x;
HRESULT result = x.AddMessageChannelListener(Foo());

// In this example, result should now be "E_NOTIMPL" based on the default mock implementation of
// AddMessageChannelListener.

x.SetAddMessageChannelListenerCallback([](const Foo& foo)
{
ASSERT_EQ(32, foo.a); // Perform validation within the callback
return HRESULT_FROM_WIN32(ERROR_OUT_OF_PAPER);
});

result = x.AddMessageChannelListener(Foo());

// Now, result should be "HRESULT_FROM_WIN32(ERROR_OUT_OF_PAPER)" based on the lambda provided. In a real test
// the MockSessionWithLambdas would passed to other classes that rely on ISession objects. Then, as those other
// objects interact with the ISession interface, all of the provided lambdas will be executed, allowing
// fine-grained control of how the other objects behave.

ASSERT_EQ(HRESULT_FROM_WIN32(ERROR_OUT_OF_PAPER), result);
}
*/ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
// Class definition must be placed inside macro to mock in Objective C++
// Clang doesn't allow unqualified methods to be mocked so we need to attach the class name to it when mocking
// A namespace is created around the class to allow this to be used more than once
////////////////////////////////////////////////////////////////
#define MOCK_CLASS(CLASS_NAME, ...)                       \
    namespace BUILD_VARIABLE_NAME(CLASS_NAME, _PRIVATE) { \
        class CLASS_NAME;                                 \
        using MOCK_CLASS_NAME = CLASS_NAME;               \
        class CLASS_NAME : __VA_ARGS__;                   \
    };                                                    \
    using CLASS_NAME = BUILD_VARIABLE_NAME(CLASS_NAME, _PRIVATE)::CLASS_NAME;

////////////////////////////////////////////////////////////////
// Macros for mocking non-const methods in low level C++
////////////////////////////////////////////////////////////////

// Mock a zero-arg non-const method in low level C++
#define MOCK_METHOD_0(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 0, false)

// Mock a one-arg non-const methods in low level C++
#define MOCK_METHOD_1(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 1, false)

// Mock a two-arg non-const method in low level C++
#define MOCK_METHOD_2(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 2, false)

// Mock a three-arg non-const method in low level C++
#define MOCK_METHOD_3(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 3, false)

// Mock a four-arg non-const method in low level C++
#define MOCK_METHOD_4(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 4, false)

// Mock a five-arg non-const method in low level C++
#define MOCK_METHOD_5(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 5, false)

// Mock a six-arg non-const method in low level C++
#define MOCK_METHOD_6(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 6, false)

// Mock a seven-arg non-const method in low level C++
#define MOCK_METHOD_7(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 7, false)

// Mock an eight-arg non-const method in low level C++
#define MOCK_METHOD_8(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 8, false)

// Mock a nine-arg non-const method in low level C++
#define MOCK_METHOD_9(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 9, false)

// Mock a ten-arg non-const method in low level C++
#define MOCK_METHOD_10(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 10, false)

////////////////////////////////////////////////////////////////
// Macros for mocking const methods in low level C++
////////////////////////////////////////////////////////////////

// Mock a zero-arg const method in low level C++
#define MOCK_CONST_METHOD_0(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 0, true)

// Mock a one-arg const method in low level C++
#define MOCK_CONST_METHOD_1(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 1, true)

// Mock a two-arg const method in low level C++
#define MOCK_CONST_METHOD_2(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 2, true)

// Mock a three-arg const method in low level C++
#define MOCK_CONST_METHOD_3(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 3, true)

// Mock a four-arg const method in low level C++
#define MOCK_CONST_METHOD_4(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 4, true)

// Mock a five-arg const method in low level C++
#define MOCK_CONST_METHOD_5(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 5, true)

// Mock a six-arg const method in low level C++
#define MOCK_CONST_METHOD_6(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 6, true)

// Mock a seven-arg const method in low level C++
#define MOCK_CONST_METHOD_7(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 7, true)

// Mock an eight-arg const method in low level C++
#define MOCK_CONST_METHOD_8(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 8, true)

// Mock a nine-arg const method in low level C++
#define MOCK_CONST_METHOD_9(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 9, true)

// Mock a ten-arg const method in low level C++
#define MOCK_CONST_METHOD_10(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 10, true)

///////////////////////////////////////////////////////////////////
// Macros for mocking non-const __stdcall methods in low level C++
///////////////////////////////////////////////////////////////////

// Mock a zero-arg non-const method in low level C++
#define MOCK_STDCALL_METHOD_0(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 0, false, __stdcall)

// Mock a one-arg non-const methods in low level C++
#define MOCK_STDCALL_METHOD_1(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 1, false, __stdcall)

// Mock a two-arg non-const method in low level C++
#define MOCK_STDCALL_METHOD_2(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 2, false, __stdcall)

// Mock a three-arg non-const method in low level C++
#define MOCK_STDCALL_METHOD_3(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 3, false, __stdcall)

// Mock a four-arg non-const method in low level C++
#define MOCK_STDCALL_METHOD_4(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 4, false, __stdcall)

// Mock a five-arg non-const method in low level C++
#define MOCK_STDCALL_METHOD_5(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 5, false, __stdcall)

// Mock a six-arg non-const method in low level C++
#define MOCK_STDCALL_METHOD_6(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 6, false, __stdcall)

// Mock a seven-arg non-const method in low level C++
#define MOCK_STDCALL_METHOD_7(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 7, false, __stdcall)

// Mock an eight-arg non-const method in low level C++
#define MOCK_STDCALL_METHOD_8(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 8, false, __stdcall)

// Mock a nine-arg non-const method in low level C++
#define MOCK_STDCALL_METHOD_9(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 9, false, __stdcall)

// Mock a ten-arg non-const method in low level C++
#define MOCK_STDCALL_METHOD_10(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 10, false, __stdcall)

///////////////////////////////////////////////////////////////////
// Macros for mocking const __stdcall methods in low level C++
///////////////////////////////////////////////////////////////////

// Mock a zero-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_0(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 0, true, __stdcall)

// Mock a one-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_1(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 1, true, __stdcall)

// Mock a two-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_2(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 2, true, __stdcall)

// Mock a three-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_3(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 3, true, __stdcall)

// Mock a four-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_4(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 4, true, __stdcall)

// Mock a five-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_5(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 5, true, __stdcall)

// Mock a six-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_6(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 6, true, __stdcall)

// Mock a seven-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_7(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 7, true, __stdcall)

// Mock an eight-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_8(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 8, true, __stdcall)

// Mock a nine-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_9(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 9, true, __stdcall)

// Mock a ten-arg const method in low level C++
#define MOCK_CONST_STDCALL_METHOD_10(METHOD_NAME) BUILD_MOCK_METHOD_IMPL(METHOD_NAME, 10, true, __stdcall)

/*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
C++/CX usage is slightly different than it is for low level C++:

1. Due to an issue in the compiler, you must first call CX_MOCK_INTERFACE before any of the CX_MOCK* macros will compile.

CX_MOCK_INTERFACE(AnotherNamespace::ITestInterface);

2. You must specify the interface name in addition to the name of the method that you're stubbing out.

CX_MOCK_METHOD_0(ITestInterface, SomeMethod);

This is all best explained with some sample code:

namespace SomeNamespace
{
interface class ISession
{
public:
virtual void SomeMethod(int x);

property int SomeProperty
{
int get();
void set(int);
}
};
}

CX_MOCK_INTERFACE(SomeNamespace::ISession); // Necessary for CX_MOCK_METHOD_* calls to compile
ref class MockSessionWithLambdas : public SomeNamespace::ISession
{
public:
CX_MOCK_METHOD_1(SomeNamespace::ISession, SomeMethod);
CX_MOCK_PROPERTY(SomeNamespace::ISession, SomeProperty);

MockSessionWithLambdas()
{
// Initialize callbacks
SetSomeMethod([](int){ });
SetSomePropertyGetter([] () { return 0; });
SetSomePropertySetter([] (int) { });
}
};

TEST_METHOD(InterfaceMockingSample)
{
auto mockSession = ref new MockSessionWithLambdas();
int callCount = 0;
mockSession->SetSomeMethod([&](int x)
{
VERIFY_ARE_EQUAL(32, x); // Perform validation within the callback
++callCount;
});

mockSession->SomeMethod(32);

VERIFY_ARE_EQUAL(1, callCount);
}
*/ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//*********************************************************************************************************************
// DO NOT directly call any of the private helper macros/functions below.
//*********************************************************************************************************************

/////////////////////////////////////////////////////////////
// Validates that a callback has been set before invoking it.
/////////////////////////////////////////////////////////////
#if !defined CUSTOM_MOCK_CALLBACK_VALIDATOR
namespace Test {
namespace Mock {
#if defined(ASSERT_TRUE_MSG)
template <typename TFunctor>
void ValidateCallback(const TFunctor& functor, const wchar_t* name) {
    ASSERT_TRUE_MSG(functor, "The callback for %S has not been set.", name);
}
#elif defined(VERIFY_IS_NOT_NULL)
template <typename TFunctor>
void ValidateCallback(const TFunctor& functor, const wchar_t* name) {
    WEX::TestExecution::SetVerifyOutput verifySettings(WEX::TestExecution::VerifyOutputSettings::LogOnlyFailures);
    VERIFY_IS_NOT_NULL(functor, WEX::Common::String().Format(L"The callback for %ls has not been set!", name));
}
#else
#error "Unknown Test Framework!"
#endif
}
}
#endif

//*********************************************************************************************************************
// Internal/private low level C++ support
//*********************************************************************************************************************
template <typename T>
struct ParameterTypes;

template <typename TReturn, typename TClass, typename... TArgs>
struct ParameterTypes<TReturn (TClass::*)(TArgs...)> {
    using ReturnType = TReturn;
    using ClassType = TClass;
    static constexpr auto ParameterCount = sizeof...(TArgs);

    template <size_t index>
    using Type = typename std::tuple_element<index - 1, std::tuple<TArgs...>>::type;

    using FunctorType = std::function<TReturn(TArgs...)>;
};

#ifndef _M_ARM

template <typename TReturn, typename TClass, typename... TArgs>
struct ParameterTypes<TReturn __stdcall (TClass::*)(TArgs...)> : ParameterTypes<TReturn (TClass::*)(TArgs...)> {};

template <typename TReturn, typename TClass, typename... TArgs>
struct ParameterTypes<TReturn __fastcall (TClass::*)(TArgs...)> : ParameterTypes<TReturn (TClass::*)(TArgs...)> {};

template <typename TReturn, typename TClass, typename... TArgs>
struct ParameterTypes<TReturn __cdecl (TClass::*)(TArgs...)> : ParameterTypes<TReturn (TClass::*)(TArgs...)> {};

template <typename TReturn, typename TClass, typename... TArgs>
struct ParameterTypes<TReturn __vectorcall (TClass::*)(TArgs...)> : ParameterTypes<TReturn (TClass::*)(TArgs...)> {};

#endif

////////////////////////////////////////////////////////////////////////////////////////////////////
// Macros used to build out the parameter types passed to the method and the contained std::function
////////////////////////////////////////////////////////////////////////////////////////////////////
#define MOCK_NAMED_ARGS_0(METHOD_NAME)

#define MOCK_NAMED_ARGS_1(METHOD_NAME) ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<1> p1

#define MOCK_NAMED_ARGS_2(METHOD_NAME) \
    ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<1> p1, ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<2> p2

#define MOCK_NAMED_ARGS_3(METHOD_NAME)                                       \
    ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<1> p1,     \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<2> p2, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<3> p3

#define MOCK_NAMED_ARGS_4(METHOD_NAME)                                       \
    ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<1> p1,     \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<2> p2, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<3> p3, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<4> p4

#define MOCK_NAMED_ARGS_5(METHOD_NAME)                                       \
    ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<1> p1,     \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<2> p2, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<3> p3, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<4> p4, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<5> p5

#define MOCK_NAMED_ARGS_6(METHOD_NAME)                                       \
    ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<1> p1,     \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<2> p2, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<3> p3, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<4> p4, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<5> p5, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<6> p6

#define MOCK_NAMED_ARGS_7(METHOD_NAME)                                       \
    ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<1> p1,     \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<2> p2, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<3> p3, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<4> p4, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<5> p5, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<6> p6, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<7> p7

#define MOCK_NAMED_ARGS_8(METHOD_NAME)                                       \
    ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<1> p1,     \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<2> p2, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<3> p3, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<4> p4, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<5> p5, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<6> p6, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<7> p7, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<8> p8

#define MOCK_NAMED_ARGS_9(METHOD_NAME)                                       \
    ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<1> p1,     \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<2> p2, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<3> p3, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<4> p4, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<5> p5, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<6> p6, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<7> p7, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<8> p8, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<9> p9

#define MOCK_NAMED_ARGS_10(METHOD_NAME)                                      \
    ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<1> p1,     \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<2> p2, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<3> p3, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<4> p4, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<5> p5, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<6> p6, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<7> p7, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<8> p8, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<9> p9, \
        ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::Type<10> p10

////////////////////////////////////////////////////
// Macros to build out function call parameter list
////////////////////////////////////////////////////
#define MOCK_CALL_ARGS_0
#define MOCK_CALL_ARGS_1 p1
#define MOCK_CALL_ARGS_2 p1, p2
#define MOCK_CALL_ARGS_3 p1, p2, p3
#define MOCK_CALL_ARGS_4 p1, p2, p3, p4
#define MOCK_CALL_ARGS_5 p1, p2, p3, p4, p5
#define MOCK_CALL_ARGS_6 p1, p2, p3, p4, p5, p6
#define MOCK_CALL_ARGS_7 p1, p2, p3, p4, p5, p6, p7
#define MOCK_CALL_ARGS_8 p1, p2, p3, p4, p5, p6, p7, p8
#define MOCK_CALL_ARGS_9 p1, p2, p3, p4, p5, p6, p7, p8, p9
#define MOCK_CALL_ARGS_10 p1, p2, p3, p4, p5, p6, p7, p8, p9, p10

/////////////////////////////////////////////////////////////
// Internally used by MOCK_* macros; do not call directly.
/////////////////////////////////////////////////////////////
#define BUILD_MOCK_METHOD_IMPL(METHOD_NAME, PARAMETER_COUNT, IS_CONST, ...)                                                               \
                                                                                \
private:                                                                                \
    ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::FunctorType BUILD_VARIABLE_NAME(m_, METHOD_NAME);                            \
                                                                                \
public:                                                                                \
    virtual ParameterTypes<decltype(&MOCK_CLASS_NAME::METHOD_NAME)>::ReturnType __VA_ARGS__ METHOD_NAME(                                  \
        BUILD_VARIABLE_NAME(MOCK_NAMED_ARGS_, PARAMETER_COUNT)(METHOD_NAME)) BUILD_VARIABLE_NAME(MEMBER_PARAMETER_TYPES_CONST_, IS_CONST) \
        override {                                                                                \
        Test::Mock::ValidateCallback(BUILD_VARIABLE_NAME(m_, METHOD_NAME), TAEF_WIDEN(TAEF_STRINGIZE(METHOD_NAME)));                      \
        return BUILD_VARIABLE_NAME(m_, METHOD_NAME)(BUILD_VARIABLE_NAME(MOCK_CALL_ARGS_, PARAMETER_COUNT));                               \
    }                                                                                \
    void BUILD_VARIABLE_NAME(Set, METHOD_NAME)(const decltype(BUILD_VARIABLE_NAME(m_, METHOD_NAME))& callback) {                          \
        BUILD_VARIABLE_NAME(m_, METHOD_NAME) = callback;                                                                                \
    }

redpajama_set_name: RedPajamaGithub


text:
/*
 * reserved comment block
 * DO NOT REMOVE OR ALTER!
 */
package com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations;

import java.security.Key;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.Enumeration;
import javax.crypto.SecretKey;
import com.sun.org.apache.xml.internal.security.exceptions.XMLSecurityException;
import com.sun.org.apache.xml.internal.security.keys.content.X509Data;
import com.sun.org.apache.xml.internal.security.keys.content.x509.XMLX509Certificate;
import com.sun.org.apache.xml.internal.security.keys.content.x509.XMLX509IssuerSerial;
import com.sun.org.apache.xml.internal.security.keys.content.x509.XMLX509SKI;
import com.sun.org.apache.xml.internal.security.keys.content.x509.XMLX509SubjectName;
import com.sun.org.apache.xml.internal.security.keys.keyresolver.KeyResolverException;
import com.sun.org.apache.xml.internal.security.keys.keyresolver.KeyResolverSpi;
import com.sun.org.apache.xml.internal.security.keys.storage.StorageResolver;
import com.sun.org.apache.xml.internal.security.utils.Constants;
import com.sun.org.apache.xml.internal.security.utils.XMLUtils;
import org.w3c.dom.Element;

/**
 * Resolves a PrivateKey within a KeyStore based on the KeyInfo hints.
 * For X509Data hints, the certificate associated with the private key entry must match.
 * For a KeyName hint, the KeyName must match the alias of a PrivateKey entry within the KeyStore.
 */
public class PrivateKeyResolver extends KeyResolverSpi {
    /** {@link org.apache.commons.logging} logging facility */
    private static java.util.logging.Logger log =
        java.util.logging.Logger.getLogger(PrivateKeyResolver.class.getName());

    private KeyStore keyStore;
    private char[] password;

    /**
     * Constructor.
     */
    public PrivateKeyResolver(KeyStore keyStore, char[] password) {
        this.keyStore = keyStore;
        this.password = password;
    }

    /**
     * This method returns whether the KeyResolverSpi is able to perform the requested action.
     *
     * @param element
     * @param BaseURI
     * @param storage
     * @return whether the KeyResolverSpi is able to perform the requested action.
     */
    public boolean engineCanResolve(Element element, String BaseURI, StorageResolver storage) {
        if (XMLUtils.elementIsInSignatureSpace(element, Constants._TAG_X509DATA)
            || XMLUtils.elementIsInSignatureSpace(element, Constants._TAG_KEYNAME)) {
            return true;
        }

        return false;
    }

    /**
     * Method engineLookupAndResolvePublicKey
     *
     * @param element
     * @param BaseURI
     * @param storage
     * @return null if no {@link PublicKey} could be obtained
     * @throws KeyResolverException
     */
    public PublicKey engineLookupAndResolvePublicKey(
        Element element, String BaseURI, StorageResolver storage
    ) throws KeyResolverException {
        return null;
    }

    /**
     * Method engineResolveX509Certificate
     * @inheritDoc
     * @param element
     * @param BaseURI
     * @param storage
     * @throws KeyResolverException
     */
    public X509Certificate engineLookupResolveX509Certificate(
        Element element, String BaseURI, StorageResolver storage
    ) throws KeyResolverException {
        return null;
    }

    /**
     * Method engineResolveSecretKey
     *
     * @param element
     * @param BaseURI
     * @param storage
     * @return resolved SecretKey key or null if no {@link SecretKey} could be obtained
     *
     * @throws KeyResolverException
     */
    public SecretKey engineResolveSecretKey(
        Element element, String BaseURI, StorageResolver storage
    ) throws KeyResolverException {
        return null;
    }

    /**
     * Method engineResolvePrivateKey
     * @inheritDoc
     * @param element
     * @param baseURI
     * @param storage
     * @return resolved PrivateKey key or null if no {@link PrivateKey} could be obtained
     * @throws KeyResolverException
     */
    public PrivateKey engineLookupAndResolvePrivateKey(
        Element element, String baseURI, StorageResolver storage
    ) throws KeyResolverException {
        if (log.isLoggable(java.util.logging.Level.FINE)) {
            log.log(java.util.logging.Level.FINE, "Can I resolve " + element.getTagName() + "?");
        }

        if (XMLUtils.elementIsInSignatureSpace(element, Constants._TAG_X509DATA)) {
            PrivateKey privKey = resolveX509Data(element, baseURI);
            if (privKey != null) {
                return privKey;
            }
        } else if (XMLUtils.elementIsInSignatureSpace(element, Constants._TAG_KEYNAME)) {
            log.log(java.util.logging.Level.FINE, "Can I resolve KeyName?");
            String keyName = element.getFirstChild().getNodeValue();

            try {
                Key key = keyStore.getKey(keyName, password);
                if (key instanceof PrivateKey) {
                    return (PrivateKey) key;
                }
            } catch (Exception e) {
                log.log(java.util.logging.Level.FINE, "Cannot recover the key", e);
            }
        }

        log.log(java.util.logging.Level.FINE, "I can't");
        return null;
    }

    private PrivateKey resolveX509Data(Element element, String baseURI) {
        log.log(java.util.logging.Level.FINE, "Can I resolve X509Data?");

        try {
            X509Data x509Data = new X509Data(element, baseURI);

            int len = x509Data.lengthSKI();
            for (int i = 0; i < len; i++) {
                XMLX509SKI x509SKI = x509Data.itemSKI(i);
                PrivateKey privKey = resolveX509SKI(x509SKI);
                if (privKey != null) {
                    return privKey;
                }
            }

            len = x509Data.lengthIssuerSerial();
            for (int i = 0; i < len; i++) {
                XMLX509IssuerSerial x509Serial = x509Data.itemIssuerSerial(i);
                PrivateKey privKey = resolveX509IssuerSerial(x509Serial);
                if (privKey != null) {
                    return privKey;
                }
            }

            len = x509Data.lengthSubjectName();
            for (int i = 0; i < len; i++) {
                XMLX509SubjectName x509SubjectName = x509Data.itemSubjectName(i);
                PrivateKey privKey = resolveX509SubjectName(x509SubjectName);
                if (privKey != null) {
                    return privKey;
                }
            }

            len = x509Data.lengthCertificate();
            for (int i = 0; i < len; i++) {
                XMLX509Certificate x509Cert = x509Data.itemCertificate(i);
                PrivateKey privKey = resolveX509Certificate(x509Cert);
                if (privKey != null) {
                    return privKey;
                }
            }
        } catch (XMLSecurityException e) {
            log.log(java.util.logging.Level.FINE, "XMLSecurityException", e);
        } catch (KeyStoreException e) {
            log.log(java.util.logging.Level.FINE, "KeyStoreException", e);
        }

        return null;
    }

    /*
     * Search for a private key entry in the KeyStore with the same Subject Key Identifier
     */
    private PrivateKey resolveX509SKI(XMLX509SKI x509SKI) throws XMLSecurityException, KeyStoreException {
        log.log(java.util.logging.Level.FINE, "Can I resolve X509SKI?");

        Enumeration<String> aliases = keyStore.aliases();
        while (aliases.hasMoreElements()) {
            String alias = aliases.nextElement();
            if (keyStore.isKeyEntry(alias)) {

                Certificate cert = keyStore.getCertificate(alias);
                if (cert instanceof X509Certificate) {
                    XMLX509SKI certSKI = new XMLX509SKI(x509SKI.getDocument(), (X509Certificate) cert);

                    if (certSKI.equals(x509SKI)) {
                        log.log(java.util.logging.Level.FINE, "match !!! ");

                        try {
                            Key key = keyStore.getKey(alias, password);
                            if (key instanceof PrivateKey) {
                                return (PrivateKey) key;
                            }
                        } catch (Exception e) {
                            log.log(java.util.logging.Level.FINE, "Cannot recover the key", e);
                            // Keep searching
                        }
                    }
                }
            }
        }

        return null;
    }

    /*
     * Search for a private key entry in the KeyStore with the same Issuer/Serial Number pair.
     */
    private PrivateKey resolveX509IssuerSerial(XMLX509IssuerSerial x509Serial) throws KeyStoreException {
        log.log(java.util.logging.Level.FINE, "Can I resolve X509IssuerSerial?");

        Enumeration<String> aliases = keyStore.aliases();
        while (aliases.hasMoreElements()) {
            String alias = aliases.nextElement();
            if (keyStore.isKeyEntry(alias)) {

                Certificate cert = keyStore.getCertificate(alias);
                if (cert instanceof X509Certificate) {
                    XMLX509IssuerSerial certSerial =
                        new XMLX509IssuerSerial(x509Serial.getDocument(), (X509Certificate) cert);

                    if (certSerial.equals(x509Serial)) {
                        log.log(java.util.logging.Level.FINE, "match !!! ");

                        try {
                            Key key = keyStore.getKey(alias, password);
                            if (key instanceof PrivateKey) {
                                return (PrivateKey) key;
                            }
                        } catch (Exception e) {
                            log.log(java.util.logging.Level.FINE, "Cannot recover the key", e);
                            // Keep searching
                        }
                    }
                }
            }
        }

        return null;
    }

    /*
     * Search for a private key entry in the KeyStore with the same Subject Name.
     */
    private PrivateKey resolveX509SubjectName(XMLX509SubjectName x509SubjectName) throws KeyStoreException {
        log.log(java.util.logging.Level.FINE, "Can I resolve X509SubjectName?");

        Enumeration<String> aliases = keyStore.aliases();
        while (aliases.hasMoreElements()) {
            String alias = aliases.nextElement();
            if (keyStore.isKeyEntry(alias)) {

                Certificate cert = keyStore.getCertificate(alias);
                if (cert instanceof X509Certificate) {
                    XMLX509SubjectName certSN =
                        new XMLX509SubjectName(x509SubjectName.getDocument(), (X509Certificate) cert);

                    if (certSN.equals(x509SubjectName)) {
                        log.log(java.util.logging.Level.FINE, "match !!! ");

                        try {
                            Key key = keyStore.getKey(alias, password);
                            if (key instanceof PrivateKey) {
                                return (PrivateKey) key;
                            }
                        } catch (Exception e) {
                            log.log(java.util.logging.Level.FINE, "Cannot recover the key", e);
                            // Keep searching
                        }
                    }
                }
            }
        }

        return null;
    }

    /*
     * Search for a private key entry in the KeyStore with the same Certificate.
     */
    private PrivateKey resolveX509Certificate(
        XMLX509Certificate x509Cert
    ) throws XMLSecurityException, KeyStoreException {
        log.log(java.util.logging.Level.FINE, "Can I resolve X509Certificate?");
        byte[] x509CertBytes = x509Cert.getCertificateBytes();

        Enumeration<String> aliases = keyStore.aliases();
        while (aliases.hasMoreElements()) {
            String alias = aliases.nextElement();
            if (keyStore.isKeyEntry(alias)) {

                Certificate cert = keyStore.getCertificate(alias);
                if (cert instanceof X509Certificate) {
                    byte[] certBytes = null;

                    try {
                        certBytes = cert.getEncoded();
                    } catch (CertificateEncodingException e1) {
                    }

                    if (certBytes != null && Arrays.equals(certBytes, x509CertBytes)) {
                        log.log(java.util.logging.Level.FINE, "match !!! ");

                        try {
                            Key key = keyStore.getKey(alias, password);
                            if (key instanceof PrivateKey) {
                                return (PrivateKey) key;
                            }
                        }
                        catch (Exception e) {
                            log.log(java.util.logging.Level.FINE, "Cannot recover the key", e);
                            // Keep searching
                        }
                    }
                }
            }
        }

        return null;
    }
}


text:
module Network.DGS.Status.Imports
	(
	  module Data.List
	, module Data.Monoid
	, module Network.DGS.Atto
	, module Network.DGS.Bulletin
	, module Network.DGS.Game
	, module Network.DGS.Message
	, module Network.DGS.Misc
	, module Network.DGS.Monad
	, module Network.DGS.Time
	, module Network.DGS.User
	, UTCTime
	, Color
	, RuleSetGo
	) where

import Data.List
import Data.Monoid
import Data.SGF.Types
import Data.Time
import Network.DGS.Atto hiding (takeWhile, take, dropWhile, drop)
import Network.DGS.Bulletin
import Network.DGS.Game hiding (Game(..))
import Network.DGS.Message
import Network.DGS.Misc
import Network.DGS.Monad
import Network.DGS.Time
import Network.DGS.User hiding (User(..), current)


text:
ACCEPTED

#### According to
Index Fungorum

#### Published in
Traité bot. syst. 1: 584 (1960)

#### Original name
Pringsheimiaceae Chadef.

### Remarks
null