www.pudn.com > NEROSDK5582.ZIP > NeroCMD.cpp
/******************************************************************************
|* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|* PARTICULAR PURPOSE.
|*
|* Copyright 1995-2002 Ahead Software AG. All Rights Reserved.
|*-----------------------------------------------------------------------------
|* NeroSDK / NeroCmd
|*
|* PROGRAM: NeroCMD.cpp
|*
|* PURPOSE: Main file of the application
******************************************************************************/
#include "stdafx.h"
#include "getopt.h"
#include "BurnContext.h"
// The one and only main() function
int main(int argc, char* argv[])
{
PARAMETERS params;
EXITCODE code;
CBurnContext s_BurnContext(¶ms);
// Get the parameters from the command line.
if (false == getopt (params, --argc, ++argv))
{
return s_BurnContext.Exit (EXITCODE_BAD_USAGE);
}
// Open the log file. If the log file name was not specified
// no file will be be openned.
s_BurnContext.OpenLogFile (params.GetErrorLogName());
// Load the NEROAPI.DLL.
code = s_BurnContext.NeroLoad ();
if (code != EXITCODE_OK)
{
return s_BurnContext.Exit (code);
}
if (COMMAND_VERSION == params.GetCommand())
{
// Display version information.
s_BurnContext.CommandVersion ();
code = EXITCODE_OK;
}
else
{
// Initialize NeroAPI.
code = s_BurnContext.InitNeroAPI ();
if (code == EXITCODE_OK)
{
// Get available drives.
code = s_BurnContext.GetAvailableDrives ();
if (code == EXITCODE_OK)
{
if (COMMAND_LISTDRIVES == params.GetCommand())
{
// Just give a nice listing of all available drives.
code = s_BurnContext.CommandListDrives (params);
}
else
{
// Open the selected device. We didn't need this unitl now.
code = s_BurnContext.OpenDevice (params);
if (code == EXITCODE_OK)
{
switch (params.GetCommand())
{
case COMMAND_ERASE:
code = s_BurnContext.CommandErase (params);
break;
case COMMAND_WRITE:
code = s_BurnContext.CommandWrite (params);
break;
case COMMAND_CDINFO:
code = s_BurnContext.CommandCDInfo (params);
break;
case COMMAND_READ:
code = s_BurnContext.CommandRead (params);
break;
case COMMAND_EJECT:
case COMMAND_LOAD:
code = s_BurnContext.CommandEject (params);
break;
default:
// This should never happen!
_ASSERTE (FALSE);
code = EXITCODE_INTERNAL_ERROR;
}
}
}
}
}
}
// Write Nero error log.
s_BurnContext.WriteNeroErrorLog (params);
// Print the exit code to the error log.
// This is good for checking success of batch mode runs.
s_BurnContext.PrintLogLine(GetTextualExitCode(code));
return s_BurnContext.Exit (code);
}