TimeManager
Macros | Functions | Variables
crontab.c File Reference

crontab形式で指定した開始時刻を取得するコマンドに関する実装。 More...

#include "../include/crontab.h"
#include <assert.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include "../include/common.h"
#include "../include/crontab_cron.h"

Macros

#define MAIN_PROGRAM
 
#define EXIT_NOT_FOUND   3
 

Functions

static void print_usage ()
 ヘルプをstderrに出力する。
 
static int attack (time_t *result, struct _entry *e, time_t start, unsigned int range)
 entry構造体を解析して、直近の時刻を取得する。 More...
 
static int output_input ()
 stdinの内容をstdoutに受け流す。 More...
 
static void output_schedule (struct schedule *in, time_t start)
 inにstartを反映したスケジュールをstdoutに出力する。 More...
 
static int parse_arguments (int argc, char **argv, char **arg, unsigned int *range_backward, unsigned int *range_forward, int *verbose)
 コマンドライン引数を解析する。 More...
 
static entryparse_string (FILE *fp)
 ファイルに書き込まれたcrontabフォーマットの文字列を解析してentry構造体を作成する。 More...
 
static int process (time_t *result, const char *str, unsigned int range_backward, unsigned int range_forward)
 crontabフォーマットの文字列を解析して、直近の時刻を取得する。 More...
 
static int read_schedule (struct schedule *sched)
 stdinからスケジュールを読み込む。 More...
 
int crontab (int argc, char *argv[])
 crontab形式で指定した開始時刻を取得する。 More...
 

Variables

static int verbose = 0
 

Detailed Description

crontab形式で指定した開始時刻を取得するコマンドに関する実装。

Macro Definition Documentation

#define EXIT_NOT_FOUND   3

空き時間が見つからない場合の戻り値

Function Documentation

static int attack ( time_t *  result,
struct _entry e,
time_t  start,
unsigned int  range 
)
static

entry構造体を解析して、直近の時刻を取得する。

Parameters
[out]result取得した時刻が反映される。
[in]e解析するentry構造体へのポインタ。
[in]start検索を開始する時刻(time_t)
[in]range検索する範囲(sec)
Returns
成功時は0、失敗時には-1を返す。
int crontab ( int  argc,
char *  argv[] 
)

crontab形式で指定した開始時刻を取得する。

引数から取得したcrontab形式の文字列を解析して、直近の時刻を取得する。 取得した時刻はstdinから読み込んだスケジュールの開始時刻に反映して、 stdoutに出力する。

  • デフォルトの検索範囲は、プログラム実行時刻から24時間。
Parameters
[in]argcargc値
[in]argvargv値
Returns
成功時は0、失敗時には1、使用方法に誤りがある場合は2、時刻が見つから ない場合は3を返す。
static int output_input ( )
static

stdinの内容をstdoutに受け流す。

Parameters
[in]instdinから読み込んだスケジュール。
[in]uo反映する空き時間のスケジュール。
Returns
成功時は0、失敗時には-1を返す。
static void output_schedule ( struct schedule in,
time_t  start 
)
static

inにstartを反映したスケジュールをstdoutに出力する。

Parameters
[in]instdinから読み込んだスケジュール。
[in]start反映する開始時刻。
static int parse_arguments ( int  argc,
char **  argv,
char **  arg,
unsigned int *  range_backward,
unsigned int *  range_forward,
int *  verbose 
)
static

コマンドライン引数を解析する。

Parameters
[in]argcargc値
[in]argvargv値
[out]arg位置引数の値が反映される。
[out]range_backward'-r'オプションの値が反映される。
[out]range_forward'-R'オプションの値が反映される。
[out]verbose'-v'オプション(verboseモード)の値が反映される。
Returns
成功時は0、'h'オプションが指定された場合は1、不正な値が与えられた場 合は2を返す。
static entry* parse_string ( FILE *  fp)
static

ファイルに書き込まれたcrontabフォーマットの文字列を解析してentry構造体を作成する。

作成された構造体は、不要になったときメモリの解放をする必要がある。

Parameters
[in]fp解析するcrontabフォーマットの文字列が書き込まれたファイルへのポインタ。
Returns
成功時にはentry構造体のポインタを、失敗時にはNULLを返す。
static int process ( time_t *  result,
const char *  str,
unsigned int  range_backward,
unsigned int  range_forward 
)
static

crontabフォーマットの文字列を解析して、直近の時刻を取得する。

Parameters
[out]result取得した時刻が反映される。
[in]str解析するcrontabフォーマットの文字列。
[in]range_backward検索する過去の範囲(sec)
[in]range_forward検索する未来の範囲(sec)
Returns
成功時には0を、失敗時には-1、strの書式が不正な場合は1、時刻が見つからない場合は2を返す。
static int read_schedule ( struct schedule sched)
static

stdinからスケジュールを読み込む。

Parameters
[out]sched読み込んだスケジュールが反映される。
Returns
成功時は0、失敗時には-1、スケジュールが不正な場合は1を返す。