You are going to be writing a calendar application that will allow the user to
send events to the calendar daemon and keep a record of the events.
You will also be required to construct a number of programs using bash and
python. This assignment will involve building some basic unix tools and utilising
existing unix tools available to you to perform text processing, basic input and
output and some system operations.
The assignment has 4 tasks that you will need to thoroughly test and implement
successfully. You have been provided a test suite to assist in developing your
The four tasks are:
1. implement a calendar daemon program in python that interpret commands
received on a named pipe
2. implement a calendar command program in python that sends commands
to the calendar daemon
3. implement an initialisation bash script that installs your calendar system
4. create an installation package for your system
The following is to assist with reading information in this document:
Arguments in the command and protocol structure will be indicated with a :
Arguments enclosed in square brackets [ and ] are optional.
Parameters that are not further speciﬁed can be any string. In order to be
considered as one single valid parameter, a string that contains whitespace has
to be enclosed by double quotation marks.
Example usage of the following:
• ADD :ITEM -> ADD APPLES
• GET :TABLE :KEY -> GET SUBJECTS INFO1112
• PUT :KEY [:ITEMS] -> PUT BASKET APPLES MILK CAKE
Task 1 – Calendar Daemon
Your calendar daemon application must allow for listening to a named pipe for
input. Your daemon will accept a number of commands and process them, these
will be used to add,remove,update and retrieve events in the calendar.
Your daemon will need to construct a named pipe within /tmp named cald_pipe
which will be used for receiving commands from the command application.
The following messages and their arguments can be received by the daemon via
a named pipe.
• ADD :DATE :EVENT [:DESCRIPTION]
Adds a new event, into the calendar’s database, the event requires a date and
an event name. Optionally a description can be included with the event itself.
• DEL :DATE :EVENT
Removes an event on a given date, if the event does not exist then nothing will
happen. If the event exists, then the event will be removed.
• UPD :DATE :OLDEVENT :NEWEVENT [:DESCIPTION]
This will allow for renaming and updating the event name of an existing event.
If the event does not exist, the update should be ignored. If a description has
been added to the update, it will update the description to the one speciﬁed.
If no description is speciﬁed, this will remove the current description and replace
it with an empty string.
In the event an error occurs with the data format, the entry should be rejected.
The date format should follow the format DD-MM-YYYY, if the date does
not follow the format speciﬁed, it should be rejected from being added to the
All events should be saved to a database that the calendar command can query
the data stored.
Database Information and Structure
Your database must be a readable comma separated value (CSV) ﬁle. Your
database MUST use this format.
Please make sure you structure the ﬁelds in the following manner:
The calendar database path will be speciﬁed by the ﬁrst argument of the daemon.
If an argument has not been speciﬁed, the daemon will create a database ﬁle that
is in the same directory as the program. For example, if the daemon was executed
in the folder /home/user/app/ and no argument was speciﬁed initially regarding
its location, the database should be create in the directory /home/user/app/.
The default name of the database ﬁle (when not speciﬁed) is cald_db.csv.
The path of the database should be stored in the temporary index ﬁle named
本网站支持 Alipay WeChatPay PayPal等支付方式
E-mail: firstname.lastname@example.org 微信号:vipnxx