0% found this document useful (0 votes)
2 views

Interprocess Communication with macOS Apple IPC Methods 1st Edition Hem Dutt instant download

The document is a promotional listing for the book 'Interprocess Communication with macOS: Apple IPC Methods' by Hem Dutt, which covers various IPC techniques on macOS, including shared memory, Mach ports, sockets, and Apple events. It provides detailed information on implementing these methods, along with real-world scenarios and pros and cons. Additionally, it includes links to other related ebooks and resources for further exploration.

Uploaded by

howarakailyn
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Interprocess Communication with macOS Apple IPC Methods 1st Edition Hem Dutt instant download

The document is a promotional listing for the book 'Interprocess Communication with macOS: Apple IPC Methods' by Hem Dutt, which covers various IPC techniques on macOS, including shared memory, Mach ports, sockets, and Apple events. It provides detailed information on implementing these methods, along with real-world scenarios and pros and cons. Additionally, it includes links to other related ebooks and resources for further exploration.

Uploaded by

howarakailyn
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 45

Interprocess Communication with macOS Apple IPC

Methods 1st Edition Hem Dutt download

https://ebookmeta.com/product/interprocess-communication-with-
macos-apple-ipc-methods-1st-edition-hem-dutt/

Download more ebook from https://ebookmeta.com


We believe these products will be a great fit for you. Click
the link to download now, or visit ebookmeta.com
to discover even more!

Interprocess Communication with macOS 1st Edition Hem


Dutt

https://ebookmeta.com/product/interprocess-communication-with-
macos-1st-edition-hem-dutt/

IPC A 610 Acceptability of Electronic Assemblies IPC A


610G Ipc

https://ebookmeta.com/product/ipc-a-610-acceptability-of-
electronic-assemblies-ipc-a-610g-ipc/

MACOS MONTEREY USER GUIDE FOR BEGINNERS A COMPREHEN


DUMMIES TO EXPERTS ILLUSTRATIVE GUIDE TO LEARNING
EVERYTHING THAT S NEEDED TO MASTER THE NEW APPLE S
MACOS 12 MONTEREY WITH LOTS OF S 1st Edition Jones
https://ebookmeta.com/product/macos-monterey-user-guide-for-
beginners-a-comprehensive-dummies-to-experts-illustrative-guide-
to-learning-everything-that-s-needed-to-master-the-new-apple-s-
macos-12-monterey-with-lots-of-s-1st-editio/

Learning Source Control with Git and SourceTree A Hands


On Guide to Source Control for coders and non coders
Roger Engelbert

https://ebookmeta.com/product/learning-source-control-with-git-
and-sourcetree-a-hands-on-guide-to-source-control-for-coders-and-
non-coders-roger-engelbert/
What Every Musician Needs to Know About the Body: The
Practical Application of Body Mapping to Making Music
Bridget Jankowski

https://ebookmeta.com/product/what-every-musician-needs-to-know-
about-the-body-the-practical-application-of-body-mapping-to-
making-music-bridget-jankowski/

Harvest of Empire A History of Latinos in America 1st


Edition Juan Gonzalez

https://ebookmeta.com/product/harvest-of-empire-a-history-of-
latinos-in-america-1st-edition-juan-gonzalez/

Upcycle My Heart 1st Edition Avery Morstan

https://ebookmeta.com/product/upcycle-my-heart-1st-edition-avery-
morstan/

Dad Bod Billionaire Dad Bod Series Men Built for


Comfort 1st Edition Matilda Martel

https://ebookmeta.com/product/dad-bod-billionaire-dad-bod-series-
men-built-for-comfort-1st-edition-matilda-martel/

Indigenous Knowledge and Disaster Risk Reduction


Insight Towards Perception Response Adaptation and
Sustainability 1st Edition Gopal Krishna Panda Uday
Chatterjee Nairwita Bandyopadhyay Martiwi Diah
Setiawati Debarpita Banerjee Eds
https://ebookmeta.com/product/indigenous-knowledge-and-disaster-
risk-reduction-insight-towards-perception-response-adaptation-
and-sustainability-1st-edition-gopal-krishna-panda-uday-
Film Quarterly Forty Years A Selection Brian Henderson
(Editor)

https://ebookmeta.com/product/film-quarterly-forty-years-a-
selection-brian-henderson-editor/
Interprocess
Communication
with macOS
Apple IPC Methods

Hem Dutt
Interprocess
Communication
with macOS
Apple IPC Methods

Hem Dutt
Interprocess Communication with macOS: Apple IPC Methods
Hem Dutt
North Delhi, Delhi, India

ISBN-13 (pbk): 978-1-4842-7044-8 ISBN-13 (electronic): 978-1-4842-7045-5


https://doi.org/10.1007/978-1-4842-7045-5

Copyright © 2021 by Hem Dutt


This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or
part of the material is concerned, specifically the rights of translation, reprinting, reuse of
illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way,
and transmission or information storage and retrieval, electronic adaptation, computer software,
or by similar or dissimilar methodology now known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark
symbol with every occurrence of a trademarked name, logo, or image we use the names, logos,
and images only in an editorial fashion and to the benefit of the trademark owner, with no
intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of
publication, neither the authors nor the editors nor the publisher can accept any legal
responsibility for any errors or omissions that may be made. The publisher makes no warranty,
express or implied, with respect to the material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Aaron Black
Development Editor: James Markham
Coordinating Editor: Jessica Vakili
Distributed to the book trade worldwide by Springer Science+Business Media New York,
1 NY Plaza, New York, NY 10014. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@
springer-sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and
the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc).
SSBM Finance Inc is a Delaware corporation.
For information on translations, please e-mail booktranslations@springernature.com; for
reprint, paperback, or audio rights, please e-mail bookpermissions@springernature.com.
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook
versions and licenses are also available for most titles. For more information, reference our Print
and eBook Bulk Sales web page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is available
to readers on GitHub via the book’s product page, located at www.apress.com/978-­1-­4842-­7044-­8.
For more detailed information, please visit http://www.apress.com/source-­code.
Printed on acid-free paper
This book is dedicated to all the students and fellow
software engineers who want to explore more about macOS
and interprocess communication.
I would also like to dedicate this book to my parents who
nurtured and disciplined my life.
Last but not the least, I would like to dedicate this book to
my beloved wife Payal who gave a new meaning to my life,
kept me motivated for new ventures, and without whom
this was not possible.
Table of Contents
About the Author�������������������������������������������������������������������������������xiii
About the Technical Reviewer������������������������������������������������������������xv
Acknowledgments����������������������������������������������������������������������������xvii

Chapter 1: Introduction to IPC on macOS���������������������������������������������1


Interprocess Communication��������������������������������������������������������������������������������2
IPC on macOS�������������������������������������������������������������������������������������������������������4
IPC Techniques on macOS�������������������������������������������������������������������������������������6
Shared File������������������������������������������������������������������������������������������������������6
Shared Memory�����������������������������������������������������������������������������������������������7
Mach Ports������������������������������������������������������������������������������������������������������7
Sockets������������������������������������������������������������������������������������������������������������8
Apple Events����������������������������������������������������������������������������������������������������8
Distributed Notifications����������������������������������������������������������������������������������8
Pasteboard������������������������������������������������������������������������������������������������������9
XPC������������������������������������������������������������������������������������������������������������������9
Summary��������������������������������������������������������������������������������������������������������������9

Chapter 2: IPC Through Shared Memory��������������������������������������������11


Introduction to Shared Memory��������������������������������������������������������������������������11
Understanding System Calls�������������������������������������������������������������������������������13
shmget����������������������������������������������������������������������������������������������������������13
shmat������������������������������������������������������������������������������������������������������������15

v
Table of Contents

shmdt������������������������������������������������������������������������������������������������������������17
shmctl������������������������������������������������������������������������������������������������������������17
Implementing IPC Using Shared Memory�����������������������������������������������������������22
Implementing Server Process�����������������������������������������������������������������������22
Implementing Client Process�������������������������������������������������������������������������28
Pros and Cons of IPC Using Shared Memory������������������������������������������������������31
Real-World Scenarios for IPC Using Shared Memory�����������������������������������������32
Summary������������������������������������������������������������������������������������������������������������35

Chapter 3: IPC Through Mach Ports����������������������������������������������������37


Introduction to Mach�������������������������������������������������������������������������������������������37
Tasks and Threads�����������������������������������������������������������������������������������������39
Ports��������������������������������������������������������������������������������������������������������������40
IPC with Mach�����������������������������������������������������������������������������������������������������42
IPC Transactions and Event Dispatching��������������������������������������������������������43
Message Queues�������������������������������������������������������������������������������������������43
Semaphores��������������������������������������������������������������������������������������������������44
Notifications��������������������������������������������������������������������������������������������������44
Locks�������������������������������������������������������������������������������������������������������������45
Remote Procedure Call (RPC) Objects�����������������������������������������������������������45
Implementing IPC Using Mach Ports (Low-­Level APIs)���������������������������������������45
Implementing Server Process�����������������������������������������������������������������������46
Implementing Client Process�������������������������������������������������������������������������51
Time to Run the Code!�����������������������������������������������������������������������������������55
Implementing IPC Using Mach Ports (High-­Level APIs)���������������������������������������56
Implementing Server Process�����������������������������������������������������������������������57
Implementing Client Process�������������������������������������������������������������������������61
Time to Run the Code!�����������������������������������������������������������������������������������65

vi
Table of Contents

Pros and Cons of IPC Using Mach Ports��������������������������������������������������������������65


Real-World Scenarios for IPC Using Mach Ports�������������������������������������������������66
Summary������������������������������������������������������������������������������������������������������������66

Chapter 4: IPC Through Sockets���������������������������������������������������������67


Introduction to Socket Programming������������������������������������������������������������������67
Implementing IPC Using Sockets (Network Framework)������������������������������������76
Implementing Server Process�����������������������������������������������������������������������76
Implementing Client Process�������������������������������������������������������������������������92
Testing with Terminal����������������������������������������������������������������������������������102
Pros and Cons of IPC Using Sockets�����������������������������������������������������������������107
Real-World Scenarios for IPC Using Sockets����������������������������������������������������107
What’s Next?�����������������������������������������������������������������������������������������������������107

Chapter 5: IPC Through Apple Events�����������������������������������������������109


Open Scripting Architecture (OSA)��������������������������������������������������������������������110
Script Execution in the OSA�������������������������������������������������������������������������111
Scripting with AppleScript��������������������������������������������������������������������������������112
Script Editor�������������������������������������������������������������������������������������������������113
Scriptable Applications�������������������������������������������������������������������������������������117
Interaction of Scriptable Application with Open Scripting
Architecture (OSA)���������������������������������������������������������������������������������������������119
IPC Using AppleScript����������������������������������������������������������������������������������������120
Example 1����������������������������������������������������������������������������������������������������121
Example 2����������������������������������������������������������������������������������������������������121
Example 3����������������������������������������������������������������������������������������������������121
Example 4����������������������������������������������������������������������������������������������������123

vii
Table of Contents

AppleScript with Cocoa Application������������������������������������������������������������������127


Invoking AppleScript Handler from Objective-C Code���������������������������������127
Invoking AppleScript Handler from Swift Code�������������������������������������������140
Scripting Bridge�������������������������������������������������������������������������������������������143
How Scripting Bridge Works?����������������������������������������������������������������������145
Working with Scripting Bridge���������������������������������������������������������������������146
Pros and Cons of IPC Using Apple Events����������������������������������������������������149
Real-World Scenarios for IPC Using Apple Events��������������������������������������������151
What’s Next?�����������������������������������������������������������������������������������������������������152

Chapter 6: IPC Through Distributed Notifications�����������������������������153


Notifications������������������������������������������������������������������������������������������������������154
Notification Center��������������������������������������������������������������������������������������������155
NotificationCenter����������������������������������������������������������������������������������������156
DistributedNotificationCenter����������������������������������������������������������������������156
Registering for a Notification����������������������������������������������������������������������������157
Registering for Local Notifications��������������������������������������������������������������157
Registering for Distributed Notifications�����������������������������������������������������159
Unregistering an Observer���������������������������������������������������������������������������162
IPC Using Distributed Notifications�������������������������������������������������������������������164
Server Implementation�������������������������������������������������������������������������������������165
Client Implementation���������������������������������������������������������������������������������166
Time to Run the Code!���������������������������������������������������������������������������������167
Delivering Notifications to Threads�������������������������������������������������������������������167
Pros and Cons of IPC Using Distributed Notifications���������������������������������������168
Real-World Scenarios for IPC Using Distributed Notifications��������������������������169
What’s Next?�����������������������������������������������������������������������������������������������������170

viii
Table of Contents

Chapter 7: IPC Through Pasteboards������������������������������������������������171


IPC Using Pasteboard����������������������������������������������������������������������������������������172
Objective-C Implementation������������������������������������������������������������������������173
Reading/Writing Custom Data���������������������������������������������������������������������174
Swift Implementation����������������������������������������������������������������������������������178
Reading/Writing Custom Data���������������������������������������������������������������������179
Time to Run the Code!���������������������������������������������������������������������������������181
Pros and Cons of IPC Using Pasteboards����������������������������������������������������������181
Real-World Scenarios for IPC Using Pasteboards���������������������������������������������182
What’s Next?�����������������������������������������������������������������������������������������������������182

Chapter 8: IPC Through XPC�������������������������������������������������������������183


Introduction to XPC�������������������������������������������������������������������������������������������183
Stability�������������������������������������������������������������������������������������������������������184
Privilege Separation������������������������������������������������������������������������������������184
Architecture and Behavior of XPC���������������������������������������������������������������������185
NSXPCConnection API����������������������������������������������������������������������������������185
XPC Services API�����������������������������������������������������������������������������������������188
Creating XPC Service����������������������������������������������������������������������������������������189
IPC Using XPC���������������������������������������������������������������������������������������������������196
Objective-C Implementation������������������������������������������������������������������������197
Designing an Interface��������������������������������������������������������������������������������197
Implementing Server Interface��������������������������������������������������������������������199
Accepting Connection XPC Server/Helper���������������������������������������������������200
Client Implementation���������������������������������������������������������������������������������203
Swift Implementation����������������������������������������������������������������������������������205
Client Implementation���������������������������������������������������������������������������������210

ix
Table of Contents

User Interface����������������������������������������������������������������������������������������������212
Time to Run the Code!���������������������������������������������������������������������������������213
Pros and Cons of IPC Using XPC�����������������������������������������������������������������������215
Real-World Scenarios for IPC Using XPC�����������������������������������������������������������217
What’s Next?�����������������������������������������������������������������������������������������������������217

Chapter 9: IPC Between Native and Web Apps���������������������������������219


Introduction to WKWebView������������������������������������������������������������������������������219
IPC Using WKWebView��������������������������������������������������������������������������������������221
Configuring Web View����������������������������������������������������������������������������������224
Web Code����������������������������������������������������������������������������������������������������226
Call JavaScript from Native Code����������������������������������������������������������������228
Call Native Code from JavaScript����������������������������������������������������������������229
Passing Parameters Through URL���������������������������������������������������������������230
Time to Run the Code!���������������������������������������������������������������������������������231
JavaScript Injection�������������������������������������������������������������������������������������234
Time to Run the Code!���������������������������������������������������������������������������������239
Pros and Cons of IPC Between Web and Native Apps���������������������������������������240
Real-World Scenarios for IPC Between Native and Web Apps��������������������������241
What’s Next?�����������������������������������������������������������������������������������������������������242

Chapter 10: Privilege Elevation��������������������������������������������������������243


When Do We Need Elevated Privileges?�����������������������������������������������������������243
Security Vulnerabilities�������������������������������������������������������������������������������������244
Buffer Overflows������������������������������������������������������������������������������������������244
Unvalidated Input�����������������������������������������������������������������������������������������244
Race Conditions�������������������������������������������������������������������������������������������245
Insecure File Operations������������������������������������������������������������������������������245
Access Control Problems�����������������������������������������������������������������������������246

x
Table of Contents

Principle of Least Privilege in Hostile Environment������������������������������������������246


Launching a New Process���������������������������������������������������������������������������247
Command-Line Arguments��������������������������������������������������������������������������248
Inheriting File Descriptors���������������������������������������������������������������������������248
Abusing Environment Variables�������������������������������������������������������������������248
Modifying Process Limits����������������������������������������������������������������������������249
File Operation Interference��������������������������������������������������������������������������249
Writing a Privileged Helper�������������������������������������������������������������������������������249
SMJobBless�������������������������������������������������������������������������������������������������251
Swift Implementation����������������������������������������������������������������������������������252
Preparing Client and Helper Targets������������������������������������������������������������253
Setting Up Signing Requirements����������������������������������������������������������������256
Shared Code������������������������������������������������������������������������������������������������260
Client Implementation���������������������������������������������������������������������������������261
Privileged Helper Tool Implementation��������������������������������������������������������266
Running Privileged Operation����������������������������������������������������������������������271
Real-World Scenarios for Creating Secure Privileged Helper Tool��������������������274
What’s Next?�����������������������������������������������������������������������������������������������������274

Conclusion����������������������������������������������������������������������������������������275

Index�������������������������������������������������������������������������������������������������277

xi
About the Author
Hem Dutt started his software engineering
career in 2010 as an OS X application
developer and, thereafter, designed and
developed numerous native macOS and
iOS applications for various clients across
the globe while working in multiple MNCs.
With a continuous experience of more than a
decade on OS X, Hem Dutt worked in multiple
domains, which include healthcare, insurance,
VPN clients, publishing, and IOT. During
his work in all these domains, he got the chance to work extensively on
IPC and privilege elevation problems. His passion for designing and
developing secure, reliable, and modular software is evident from his
blogs, client awards/recommendations, and open source projects.
He created and maintains https://techknowmore.wordpress.com and
https://github.com/HemDutt.

xiii
About the Technical Reviewer
Felipe Laso is a Senior Systems Engineer working at Lextech Global
Services. He’s also an aspiring game designer/programmer. You can follow
him on Twitter at @iFeliLM or on his blog.

xv
Acknowledgments
I have to start by thanking my awesome wife, Payal, for keeping me
motivated throughout my journey as a writer. She is always by my side
and pushes me to fulfill my dreams however impossible they seem to
others. Thank you so much dear for being my pillar of strength. You are a
superwoman.
I must offer special thanks to my parents who nurtured my childhood
and despite their limited means provided me the best they could possibly
do and shaped my character.
I would also like to thank Aaron Black and Apress for giving me this
opportunity, and special mention to Jessica Vakili for supporting and
guiding me throughout the development of this book.
A big thanks to technical and editorial reviewers for helping me in
shaping the chapters and content of this book.
I would also like to thank my colleagues and friends, who always
believed in me and encouraged me. Special mention to Team Firefighters.
It was a pleasure working with you guys and a learning experience.
A special thanks to a very special person, Dr. Thomas Griffin, for being
a mentor, friend, and a guru to me. You have helped me grow, and I must
acknowledge your contribution in what I am today.
Finally, I would like to acknowledge my two beautiful children, Anika
and Adwit. Thanks Anika for being such a powerhouse and for bringing
so much energy into the house and Adwit for being such a sweetheart and
adorable baby and filling the atmosphere with unconditional love. I love
both of you so much.

xvii
CHAPTER 1

Introduction to IPC
on macOS
In the computing world, processes execute to accomplish specified
computation. A process which is acting independently does not get
affected by the execution of other processes. Though it seems that the
processes that are running independently will execute very efficiently
and are less error prone, in reality, there could be many situations
when cooperative processes can be utilized for increasing modularity,
computational speed, and convenience but at the cost of increased
complexity.
An effective way to use a computer system is to spread the given
computation over several processes. To achieve more speed and
modularity, processes need to work and communicate in parallel and
distributed processing environments. These processes then form a set
of communicating processes which cooperate in computing to reach a
solution. In a highly distributed, multiprocessor system, these processes
may even reside on different machines. In such a case, the communication
is supported over a network.
With cooperation, complexity increases and the need for interprocess
communication (IPC) arises.

© Hem Dutt 2021 1


H. Dutt, Interprocess Communication with macOS,
https://doi.org/10.1007/978-1-4842-7045-5_1
Exploring the Variety of Random
Documents with Different Content
The Project Gutenberg eBook of Index of the
Project Gutenberg Works of Sir Winston
Spencer Churchill
This ebook is for the use of anyone anywhere in the United States
and most other parts of the world at no cost and with almost no
restrictions whatsoever. You may copy it, give it away or re-use it
under the terms of the Project Gutenberg License included with this
ebook or online at www.gutenberg.org. If you are not located in the
United States, you will have to check the laws of the country where
you are located before using this eBook.

Title: Index of the Project Gutenberg Works of Sir Winston Spencer


Churchill

Author: Winston Churchill

Editor: David Widger

Release date: January 7, 2019 [eBook #58647]


Most recently updated: February 25, 2021

Language: English

Credits: Produced by David Widger

*** START OF THE PROJECT GUTENBERG EBOOK INDEX OF THE


PROJECT GUTENBERG WORKS OF SIR WINSTON SPENCER
CHURCHILL ***
INDEX OF THE PROJECT
GUTENBERG

WORKS OF

SIR WINSTON SPENCER


CHURCHILL

Compiled by David Widger


CONTENTS
Click on the ## before each of the titles to
view a linked
table of contents for that volume.

Click on the title itself to open the original


online file.

## THE RIVER WAR

## THE MALAKAND FIELD FORCE

## LONDON TO LADYSMITH VIA PRETORIA

## LIBERALISM AND THE SOCIAL PROBLEM

## IAN HAMILTON'S MARCH

## LORD RANDOLPH CHURCHILL

## MY AFRICAN JOURNEY

## SAVROLA

## WORLD CRISIS, Vol. 1


TABLES OF CONTENTS OF
VOLUMES

THE RIVER WAR


An Account of the Reconquest of
the Sudan
By Winston S. Churchill

CONTENTS

CHAPTER I. THE REBELLION OF THE MAHDI


CHAPTER II. THE FATE OF THE ENVOY
CHAPTER III. THE DERVISH EMPIRE
CHAPTER IV. THE YEARS OF PREPARATION
CHAPTER V. THE BEGINNING OF THE WAR
CHAPTER VI. FIRKET
CHAPTER VII. THE RECOVERY OF THE DONGOLA PROVINCE
CHAPTER VIII. THE DESERT RAILWAY
CHAPTER IX. ABU HAMED
CHAPTER X. BERBER
CHAPTER XI. RECONNAISSANCE
CHAPTER XII. THE BATTLE OF THE ATBARA
CHAPTER XIII. THE GRAND ADVANCE
CHAPTER XIV. THE OPERATIONS OF THE FIRST OF SEPTEMBER
CHAPTER XV. THE BATTLE OF OMDURMAN
CHAPTER XVI. THE FALL OF THE CITY
CHAPTER XVII. 'THE FASHODA INCIDENT'
CHAPTER XVIII. ON THE BLUE NILE
CHAPTER XIX. THE END OF THE KHALIFA
APPENDIX.
THE STORY OF THE
MALAKAND FIELD FORCE
An Episode Of Frontier War
By Sir Winston S. Churchill

CONTENTS

PREFACE
CHAPTER I. THE THEATRE OF WAR
CHAPTER II. THE MALAKAND CAMPS
CHAPTER III. THE OUTBREAK
CHAPTER IV. THE ATTACK ON THE MALAKAND
CHAPTER V. THE RELIEF OF CHAKDARA
CHAPTER VI. THE DEFENCE OF CHAKDARA
CHAPTER VII. THE GATE OF SWAT
CHAPTER VIII. THE ADVANCE AGAINST THE MOHMANDS
CHAPTER IX. RECONNAISSANCE
CHAPTER X. THE MARCH TO NAWAGAI
THE ACTION OF THE MAMUND VALLEY, 16TH
CHAPTER XI.
SEPTEMBER
CHAPTER XII. AT INAYAT KILA
CHAPTER XIII. NAWAGAI
CHAPTER XIV. BACK TO THE MAMUND VALLEY
CHAPTER XV. THE WORK OF THE CAVALRY
CHAPTER XVI. SUBMISSION
CHAPTER
MILITARY OBSERVATIONS
XVII.
CHAPTER
AND LAST... THE RIDDLE OF THE FRONTIER
XVIII.

LONDON TO LADYSMITH VIA


PRETORIA
By Winston Spencer Churchill
CONTENTS

INTRODUCTORY
NOTE
MAPS AND PLANS
STEAMING SOUTH R.M.S. 'Dunottar Castle,'
CHAPTER I.
October 26 and October 29, 1899
THE STATE OF THE GAME Capetown;
CHAPTER II.
November 1, 1899
ALONG THE SOUTHERN FRONTIER East
CHAPTER III.
London: November 5, 1899
CHAPTER IV. IN NATAL Estcourt: November 6, 1899
A CRUISE IN THE ARMOURED TRAIN
CHAPTER V.
Estcourt: November 9, 1899
CHAPTER VI. DISTANT GUNS Estcourt: November 10, 1899
THE FATE OF THE ARMOURED TRAIN
CHAPTER VII.
Pretoria: November 20, 1899
PRISONERS OF WAR Pretoria: November 24,
CHAPTER VIII.
1899
THROUGH THE DUTCH CAMPS Pretoria:
CHAPTER IX.
November 30, 1899
IN AFRIKANDER BONDS Pretoria: December
CHAPTER X.
3, 1899
I ESCAPE FROM THE BOERS Lourenço
CHAPTER XI.
Marques: December 22, 1899
BACK TO THE BRITISH LINES Frere:
CHAPTER XII.
December 24, 1899
CHRISTMAS AND NEW YEAR Frere: January
CHAPTER XIII.
4, 1900
A MILITARY DEMONSTRATION AND SOME
CHAPTER XIV.
GOOD NEWS Chieveley: January 8, 1900
THE DASH FOR POTGIETER'S FERRY
CHAPTER XV.
Spearman's Hill: January 13, 1900
TRICHARDT'S DRIFT AND THE AFFAIR OF
CHAPTER XVI. ACTON HOMES Venter's Spruit: January 22,
1900
THE BATTLE OF SPION KOP Venter's Spruit:
CHAPTER XVII.
January 25, 1900
THROUGH THE FIVE DAYS' ACTION Venter's
CHAPTER XVIII.
Spruit: January 25, 1900
A FRESH-EFFORT AND AN ARMY CHAPLAIN
CHAPTER XIX.
Spearman's Hill: February 4, 1900
THE COMBAT OF VAAL KRANTZ General
CHAPTER XX.
Buller's Headquarters: February 9, 1900
HUSSAR HILL General Buller's Headquarters:
CHAPTER XXI.
February 15, 1900
THE ENGAGEMENT OF MONTE CRISTO
CHAPTER XXII.
Cingolo Neck: February 19, 1900
THE PASSAGE OF THE TUGELA Hospital-ship
CHAPTER XXIII.
'Maine': March 4, 1900
THE BATTLE OF PIETERS: THE THIRD DAY
CHAPTER XXIV.
Hospital-ship 'Maine': March 5, 1900
UPON MAJUBA DAY Commandant's Office,
CHAPTER XXV.
Durban: March 6, 1900
THE RELIEF OF LADYSMITH Commandant's
CHAPTER XXVI.
Office, Durban: March 9, 1900
CHAPTER XXVII. AFTER THE SIEGE Durban: March 10, 1900
MAPS

MAP OF MR. CHURCHILL'S ROUTE


THE THEATRE OF THE OPERATIONS IN NATAL
MAP OF THE OPERATIONS OF THE NATAL FIELD ARMY
FROM JANUARY 11 TO FEBRUARY 9, INCLUDING:
THE CAPTURE OF POTGIETER'S FERRY, JANUARY 11
THE PASSAGE OF THE TUGELA AT TRICHARDT'S DRIFT, JANUARY
17
THE AFFAIR OF ACTON HOMES, JANUARY 18
THE ACTION OF VENTER'S SPRUIT, JANUARY 20 AND 21
THE BATTLE OF SPION KOP, JANUARY 24; AND
THE COMBAT OF VAAL KRANTZ, FEBRUARY 6, 7, AND 8
MAP OF THE OPERATIONS OF THE NATAL FIELD ARMY
FROM FEBRUARY 14 TO 28, INCLUDING:
THE RECONNAISSANCE AND CAPTURE OF HUSSAR HILL,
FEBRUARY 14
THE CAPTURE OF CINGOLO, FEBRUARY 17
THE ENGAGEMENT OF MONTE CRISTO, FEBRUARY I8
OCCUPATION OF THE HLANGWANI PLATEAU, FEBRUARY 19 AND
20; AND
THE BATTLE OF PIETERS FEBRUARY 21 TO 27

PLANS

THE STATES MODEL SCHOOLS


POTGIETER'S FERRY
POSITION AT MONTE CRISTO
THE COLENSO POSITION

LIBERALISM AND THE SOCIAL


PROBLEM
By The Right Honourable Winston
Spencer Churchill M.P.
LONDON MCMIX

CONTENTS

PAGE
PREFACE vii
INTRODUCTION xiii

I
THE RECORD OF THE GOVERNMENT
THE CONCILIATION OF SOUTH AFRICA 3
THE TRANSVAAL CONSTITUTION 16
THE ORANGE FREE STATE CONSTITUTION 45
LIBERALISM AND SOCIALISM 67
IMPERIAL PREFERENCE—I. 85
IMPERIAL PREFERENCE—II. 106
THE HOUSE OF LORDS 124
THE DUNDEE ELECTION 147

II
SOCIAL ORGANISATION
THE MINES [EIGHT HOURS] BILL 173
UNEMPLOYMENT 189
THE SOCIAL FIELD 211
THE APPROACHING CONFLICT 225
THE ANTI-SWEATING BILL 239
LABOUR EXCHANGES AND UNEMPLOYMENT INSURANCE 253

III
THE BUDGET
THE BUDGET RESOLUTIONS 277
THE BUDGET AND NATIONAL INSURANCE 297
LAND AND INCOME TAXES IN THE BUDGET 318
THE BUDGET AND THE LORDS 344
THE SPIRIT OF THE BUDGET 357
THE BUDGET AND PROPERTY 384
THE CONSTITUTIONAL MENACE 405

IAN HAMILTON'S MARCH


By Winston Spencer Churchill
1900

CONTENTS

A Roving Commission
Exit General Gatacre
At Half-Way House
Two Days with Brabazon
Two Days with Brabazon--*Continued*
The Dewetsdorp Episode
Ian Hamilton's March
Ian Hamilton
The Action of Houtnek
The Army of the Right Flank
Lindley
Concerning a Boer Convoy
Action of Johannesburg
The Fall of Johannesburg
The Capture Of Pretoria
"Held By The Enemy"
Action Of Diamond Hill
APPENDIX
IAN HAMILTON

MAPS AND PLANS


Operations in the Orange Free State, April, 1900
Diagram Explaining Hamilton's Action at Israel's Poorte, the 25th of
April
Diagram Explaining French's Operations Round Thabanchu, the
25th and 27th of April
Diagram Explaining the Action of Houtnek
Diagram to Explain the Passage of the Sand River, 10th of May,
1900
Ian Hamilton's Action at the Sand River, 10th of May, 1900
Ian Hamilton's Action before Johannesburg
Plan of the Operations of 11th and 12th of June, 1900
Diagram Explaining the Action of Diamond Hill
Map of March from Bloemfontein to Pretoria At end of book

LORD RANDOLPH CHURCHILL


By Winston Spencer Churchill, M.P.
1883
LORD RANDOLPH CHURCHILL

You might also like