Пример #1
0
int main(int argc, char *argv[])
{
	errorCode tmp_err_code = UNEXPECTED_ERROR;
	FILE *outfile = stdout; // Default is the standard output
	char sourceFile[100];
	EXIPSchema schema;
	EXIPSchema* schemaPtr = NULL;
	int argIndex = 1;

	strcpy(sourceFile, "stdout");

	if(argc >= 2)
	{
		if(strcmp(argv[argIndex], "-help") == 0)
		{
			printfHelp();
			return 0;
		}
		else if(strstr(argv[argIndex], "-schema") != NULL)
		{
			// Schema enabled encoding is requested.
			// All the xsd files should be passed as comma-separated list
			char* xsdList = argv[argIndex] + 7;

			parseSchema(xsdList, &schema);

			schemaPtr = &schema;
			argIndex++;
		}
	}

	if(argIndex < argc)
	{
		strcpy(sourceFile, argv[argIndex]);

		outfile = fopen(sourceFile, "wb" );
		if(!outfile)
		{
			fprintf(stderr, "Unable to open file %s", sourceFile);
			return 1;
		}
	}

	tmp_err_code = encode(schemaPtr, outfile, writeFileOutputStream);

	if(schemaPtr != NULL)
		destroySchema(schemaPtr);

	if(tmp_err_code != ERR_OK)
	{
		printf("\nError (code: %d) during encoding of: %s\n", tmp_err_code, sourceFile);
		exit(1);
	}
	else
	{
		printf("\nSuccessful encoding in %s\n", sourceFile);
		exit(1);
	}

	fclose(outfile);
}
Пример #2
0
int main(int argc, char *argv[])
{
	errorCode tmp_err_code = UNEXPECTED_ERROR;
	FILE *outfile;
	char sourceFile[50];
	EXIPSchema schema;
	EXIPSchema* schemaPtr = NULL;

	if(argc > 1)
	{
		if(strcmp(argv[1], "-help") == 0)
		{
			printfHelp();
			return 0;
		}
		else if(strcmp(argv[1], "-schema") == 0)
		{
			FILE *schemaFile;
 			BinaryBuffer buffer[MAX_XSD_FILES_COUNT]; // up to 10 XSD files
			char schemaFileName[50];
			unsigned int schemaFilesCount = 0;
			unsigned int i;

			if(argc <= 3)
			{
				printfHelp();
				return 0;
			}
			else
				schemaFilesCount = argc - 3;

			if(schemaFilesCount > MAX_XSD_FILES_COUNT)
			{
				fprintf(stderr, "Too many xsd files given as an input: %d", schemaFilesCount);
				exit(1);
			}

			for(i = 0; i < schemaFilesCount; i++)
			{
				strcpy(schemaFileName, argv[2 + i]);

				schemaFile = fopen(schemaFileName, "rb" );
				if(!schemaFile)
				{
					fprintf(stderr, "Unable to open file %s", schemaFileName);
					return 1;
				}
				else
				{
					//Get file length
					fseek(schemaFile, 0, SEEK_END);
					buffer[i].bufLen = ftell(schemaFile) + 1;
					fseek(schemaFile, 0, SEEK_SET);

					//Allocate memory
					buffer[i].buf = (char *) malloc(buffer[i].bufLen);
					if (!buffer[i].buf)
					{
						fprintf(stderr, "Memory allocation error!");
						fclose(schemaFile);
						return 1;
					}

					//Read file contents into buffer
					fread(buffer[i].buf, buffer[i].bufLen, 1, schemaFile);
					fclose(schemaFile);

					buffer[i].bufContent = buffer[i].bufLen;
					buffer[i].ioStrm.readWriteToStream = NULL;
					buffer[i].ioStrm.stream = NULL;
				}
			}

			tmp_err_code = generateSchemaInformedGrammars(buffer, schemaFilesCount, SCHEMA_FORMAT_XSD_EXI, &schema);
			if(tmp_err_code != ERR_OK)
			{
				printf("\n Error occured: %d", tmp_err_code);
				return 1;
			}

			schemaPtr = &schema;
			for(i = 0; i < schemaFilesCount; i++)
			{
				free(buffer[i].buf);
			}
		}

		strcpy(sourceFile, argv[argc - 1]);

		outfile = fopen(sourceFile, "wb" );
		if(!outfile)
		{
			fprintf(stderr, "Unable to open file %s", sourceFile);
			return 1;
		}
		else
		{
			EXIStream testStrm;
			String uri;
			String ln;
			QName qname = {&uri, &ln, NULL};
			String chVal;
			char buf[OUTPUT_BUFFER_SIZE];
			BinaryBuffer buffer;

			buffer.buf = buf;
			buffer.bufLen = OUTPUT_BUFFER_SIZE;
			buffer.bufContent = 0;

			// Serialization steps:

			// I: First initialize the header of the stream
			serialize.initHeader(&testStrm);

			// II: Set any options in the header, if different from the defaults
			testStrm.header.has_cookie = TRUE;
			testStrm.header.has_options = TRUE;
			testStrm.header.opts.valueMaxLength = 300;
			testStrm.header.opts.valuePartitionCapacity = 50;
			SET_STRICT(testStrm.header.opts.enumOpt);

			// III: Define an external stream for the output if any
			buffer.ioStrm.readWriteToStream = writeFileOutputStream;
			buffer.ioStrm.stream = outfile;

			// IV: Initialize the stream
			tmp_err_code = serialize.initStream(&testStrm, buffer, schemaPtr, SCHEMA_ID_ABSENT, NULL);
			if(tmp_err_code != ERR_OK)
				printError(tmp_err_code, &testStrm, outfile);

			// V: Start building the stream step by step: header, document, element etc...
			tmp_err_code += serialize.exiHeader(&testStrm);

			tmp_err_code += serialize.startDocument(&testStrm);

			qname.uri = &NS_STR;
			qname.localName = &ELEM_MULT_TEST_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <MultipleXSDsTest>

			qname.uri = &NS_STR;
			qname.localName = &ELEM_ENCODE_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <EXIPEncoder>

			// NOTE: attributes should come lexicographically sorted during serialization

			qname.uri = &NS_EMPTY_STR;
			qname.localName = &ATTR_BYTE_STR;

			if(schemaPtr != NULL)
			{
				// schema mode
				tmp_err_code += serialize.attribute(&testStrm, qname, VALUE_TYPE_SMALL_INTEGER); // testByte="
				tmp_err_code += serialize.intData(&testStrm, 55);
			}
			else
			{
				// schema-less mode
				tmp_err_code += serialize.attribute(&testStrm, qname, VALUE_TYPE_STRING); // testByte="
				tmp_err_code += asciiToString("55", &chVal, &testStrm.memList, FALSE);
				tmp_err_code += serialize.stringData(&testStrm, chVal);
			}

			qname.localName = &ATTR_VERSION_STR;
			tmp_err_code += serialize.attribute(&testStrm, qname, VALUE_TYPE_STRING); // version="

			tmp_err_code += asciiToString("0.2", &chVal, &testStrm.memList, FALSE);
			tmp_err_code += serialize.stringData(&testStrm, chVal);

			tmp_err_code += asciiToString("This is an example of serializing EXI streams using EXIP low level API", &chVal, &testStrm.memList, FALSE);
			tmp_err_code += serialize.stringData(&testStrm, chVal);

			tmp_err_code += serialize.endElement(&testStrm); // </EXIPEncoder>

			qname.uri = &NS_STR;
			qname.localName = &ELEM_DESCR_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <description>

			tmp_err_code += asciiToString("This is a test of processing XML schemes with multiple XSD files", &chVal, &testStrm.memList, FALSE);
			tmp_err_code += serialize.stringData(&testStrm, chVal);

			tmp_err_code += serialize.endElement(&testStrm); // </description>

			qname.uri = &NS_NESTED_STR;
			qname.localName = &ELEM_TEST_SETUP_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <testSetup>

			qname.uri = &NS_EMPTY_STR;
			qname.localName = &ATTR_GOAL_STR;
			tmp_err_code += serialize.attribute(&testStrm, qname, VALUE_TYPE_STRING); // goal="

			tmp_err_code += asciiToString("Verify that the implementation works!", &chVal, &testStrm.memList, FALSE);
			tmp_err_code += serialize.stringData(&testStrm, chVal);

			tmp_err_code += asciiToString("Simple test element with single attribute", &chVal, &testStrm.memList, FALSE);
			tmp_err_code += serialize.stringData(&testStrm, chVal);

			tmp_err_code += serialize.endElement(&testStrm); // </testSetup>

			qname.uri = &NS_STR;
			qname.localName = &ELEM_TYPE_TEST_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <type-test>

			if(schemaPtr != NULL)
			{
				// schema mode
				qname.uri = &NS_EMPTY_STR;
				qname.localName = &ATTR_ID_STR;
				tmp_err_code += serialize.attribute(&testStrm, qname, VALUE_TYPE_INTEGER); // id="
				tmp_err_code += serialize.intData(&testStrm, 1001);
			}
			else
			{
				// schema-less mode
				qname.uri = &NS_EMPTY_STR;
				qname.localName = &ATTR_ID_STR;
				tmp_err_code += serialize.attribute(&testStrm, qname, VALUE_TYPE_STRING); // id="
				tmp_err_code += asciiToString("1001", &chVal, &testStrm.memList, FALSE);
				tmp_err_code += serialize.stringData(&testStrm, chVal);
			}

			qname.uri = &NS_NESTED_STR;
			qname.localName = &ELEM_BOOL_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <bool>

			if(schemaPtr != NULL)
			{
				// schema mode
				tmp_err_code += serialize.booleanData(&testStrm, TRUE);
			}
			else
			{
				// schema-less mode
				tmp_err_code += asciiToString("true", &chVal, &testStrm.memList, FALSE);
				tmp_err_code += serialize.stringData(&testStrm, chVal);
			}

			tmp_err_code += serialize.endElement(&testStrm); // </bool>

			tmp_err_code += serialize.endElement(&testStrm); // </type-test>

			qname.uri = &NS_STR;
			qname.localName = &ELEM_EXT_TYPES_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <extendedTypeTest>

			qname.uri = &NS_EMPTY_STR;
			qname.localName = &ELEM_BYTE_TYPES_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <byteTest>

			if(schemaPtr != NULL)
			{
				// schema mode
				tmp_err_code += serialize.intData(&testStrm, 11);
			}
			else
			{
				// schema-less mode
				tmp_err_code += asciiToString("11", &chVal, &testStrm.memList, FALSE);
				tmp_err_code += serialize.stringData(&testStrm, chVal);
			}

			tmp_err_code += serialize.endElement(&testStrm); // </byteTest>

			qname.uri = &NS_EMPTY_STR;
			qname.localName = &ELEM_DATE_TYPES_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <dateTimeTest>

			if(schemaPtr != NULL)
			{
				// schema mode
				EXIPDateTime dt;

				dt.presenceMask = 0;
				dt.presenceMask = dt.presenceMask | YEAR_PRESENCE;
				dt.presenceMask = dt.presenceMask | MON_PRESENCE;
				dt.presenceMask = dt.presenceMask | MDAY_PRESENCE;
				dt.presenceMask = dt.presenceMask | HOUR_PRESENCE;
				dt.presenceMask = dt.presenceMask | MIN_PRESENCE;
				dt.presenceMask = dt.presenceMask | SEC_PRESENCE;
				dt.presenceMask = dt.presenceMask | FRACT_PRESENCE;

				dt.dateTime.tm_year = 112; // 2012
				dt.dateTime.tm_mon = 6;	// July
				dt.dateTime.tm_mday = 31;
				dt.dateTime.tm_hour = 13;
				dt.dateTime.tm_min = 33;
				dt.dateTime.tm_sec = 55;
				dt.fSecs.value = 839;
				dt.fSecs.offset = 5;

				tmp_err_code += serialize.dateTimeData(&testStrm, dt);
			}
			else
			{
				// schema-less mode
				tmp_err_code += asciiToString("2012 Jul 31 13:33", &chVal, &testStrm.memList, FALSE);
				tmp_err_code += serialize.stringData(&testStrm, chVal);
			}

			tmp_err_code += serialize.endElement(&testStrm); // </dateTimeTest>

			qname.uri = &NS_EMPTY_STR;
			qname.localName = &ELEM_BIN_TYPES_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <binaryTest>

			if(schemaPtr != NULL)
			{
				// schema mode
				tmp_err_code += serialize.binaryData(&testStrm, SOME_BINARY_DATA, 10);
			}
			else
			{
				// schema-less mode
				tmp_err_code += serialize.stringData(&testStrm, SOME_BINARY_DATA_BASE64);
			}

			tmp_err_code += serialize.endElement(&testStrm); // </binaryTest>

			qname.uri = &NS_EMPTY_STR;
			qname.localName = &ELEM_ENUM_TYPES_STR;
			tmp_err_code += serialize.startElement(&testStrm, qname); // <enumTest>
			tmp_err_code += serialize.stringData(&testStrm, ENUM_DATA_4);
			tmp_err_code += serialize.endElement(&testStrm); // </enumTest>


			tmp_err_code += serialize.endElement(&testStrm); // </extendedTypeTest>

			tmp_err_code += serialize.endElement(&testStrm); // </MultipleXSDsTest>
			tmp_err_code += serialize.endDocument(&testStrm);

			if(tmp_err_code != ERR_OK)
				printError(tmp_err_code, &testStrm, outfile);

			// VI: Free the memory allocated by the EXI stream object
			tmp_err_code = serialize.closeEXIStream(&testStrm);

			fclose(outfile);

			if(schemaPtr != NULL)
				destroySchema(schemaPtr);
		}
	}
	else
	{
		printfHelp();
		return 1;
	}
	return 0;
}
Пример #3
0
int main(int argc, char *argv[])
{
	FILE *infile = stdin;
	char sourceFileName[500];
	EXIPSchema schema;
	EXIPSchema* schemaPtr = NULL;
	EXIOptions ops;
	EXIOptions* opsPtr = NULL;
	boolean outOfBandOpts = FALSE;
	unsigned char outFlag = OUT_EXI; // Default output option
	unsigned int argIndex = 1;
	errorCode tmp_err_code = EXIP_UNEXPECTED_ERROR;

	strcpy(sourceFileName, "stdin");
	makeDefaultOpts(&ops);
	struct timespec start, stopGrammar, stopGrAndInstance;

	if(argc > 1)
	{
		if(strcmp(argv[argIndex], "-help") == 0)
		{
			printfHelp();
			return 0;
		}
		else if(strcmp(argv[argIndex], "-exi") == 0)
		{
			outFlag = OUT_EXI;
			if(argc == 2)
			{
				printfHelp();
				return 0;
			}

			argIndex += 1;
		}
		else if(strcmp(argv[argIndex], "-xml") == 0)
		{
			outFlag = OUT_XML;
			if(argc == 2)
			{
				printfHelp();
				return 0;
			}

			argIndex += 1;
		}

		if(strstr(argv[argIndex], "-ops") != NULL)
		{
			char *mask = argv[argIndex] + 4;
			outOfBandOpts = TRUE;

			parseOpsMask(mask, &ops);
			opsPtr = &ops;

			argIndex += 1;
		}

		if(strstr(argv[argIndex], "-schema") != NULL)
		{
			char *xsdList = argv[argIndex] + 7;

		    if( clock_gettime( CLOCK_MONOTONIC, &start) == -1 ) {
		      perror( "clock gettime" );
		      exit( EXIT_FAILURE );
		    }

			parseSchema(xsdList, &schema);

		    if( clock_gettime( CLOCK_MONOTONIC, &stopGrammar) == -1 ) {
		      perror( "clock gettime" );
		      exit( EXIT_FAILURE );
		    }

		    printf( "%ld ; ", ((long) (stopGrammar.tv_sec - start.tv_sec)*1000000000) + (long) (stopGrammar.tv_nsec - start.tv_nsec));

//		    printf( "SECONDS: %ld\n", (long) (stopGrammar.tv_sec - start.tv_sec));
//		    printf( "NANOSEC: %ld\n", (long) (stopGrammar.tv_nsec - start.tv_nsec));

			schemaPtr = &schema;

			argIndex += 1;
		}
	}

	if(argIndex < argc)
	{
		strcpy(sourceFileName, argv[argIndex]);

		infile = fopen(sourceFileName, "rb" );
		if(!infile)
		{
			fprintf(stderr, "Unable to open file %s\n", sourceFileName);
			exit(1);
		}
	}

	tmp_err_code = decode(schemaPtr, outFlag, infile, outOfBandOpts, opsPtr, readFileInputStream);

	if(schemaPtr != NULL)
		destroySchema(schemaPtr);
	fclose(infile);

    if( clock_gettime( CLOCK_MONOTONIC, &stopGrAndInstance) == -1 ) {
      perror( "clock gettime" );
      exit( EXIT_FAILURE );
    }

    printf( "%ld", ((long) (stopGrAndInstance.tv_sec - start.tv_sec)*1000000000) + (long) (stopGrAndInstance.tv_nsec - start.tv_nsec));

//    printf( "SECONDS: %ld\n", (long) (stopGrAndInstance.tv_sec - start.tv_sec));
//    printf( "NANOSEC: %ld\n", (long) (stopGrAndInstance.tv_nsec - start.tv_nsec));

	if(tmp_err_code != EXIP_OK)
	{
		printf("\nError (code: %d) during parsing of the EXI stream: %s\n", tmp_err_code, sourceFileName);
		return 1;
	}
	else
	{
//		printf("\nSuccessful parsing of the EXI stream: %s\n", sourceFileName);
		return 0;
	}
}
Пример #4
0
int main(int argc, char* argv[])
{
	int ret=0;
	int fHandle;
	psd_context * context=NULL;

	ret = IsBigEndian();
	if (!ret)
		printf("we are using little endian, psd image file stream byte order is big endian! need convert\n");
	else
		printf("we are using big endian\n");
	
	if (argc == 1)
	{
		printfHelp();
		return 0;
	}

	if (!strcmp(argv[1],"psd2bmp"))
	{
		Psd2Bmp("..\\..\\pic\\tianye_all.psd","..\\..\\pic\\tianye_all.bmp");
		Psd2Bmp("..\\..\\pic\\tianye_new.psd","..\\..\\pic\\tianye_new.jpg");
		Psd2Png("..\\..\\pic\\tianye_all.psd","..\\..\\pic\\tianye_all.png");
	}
	else if (!strcmp(argv[1],"merge"))
	{
		MergeTwoPngFile("..\\..\\pic\\bg.png","..\\..\\pic\\tianye.png","..\\..\\pic\\merge.png",180);
	}
	else if (!strcmp(argv[1],"bmp2psd"))
	{
		//CreateDemoPsdFile("..\\..\\pic\\tianye_new.psd","..\\..\\pic\\tianye.png");
		fHandle = PsdNewFile("..\\..\\pic\\tianye_1.psd","..\\..\\pic\\tianye.bmp");
		printf("new one psd file, ret=%d\n",fHandle);
		if (ret>=0)
		{
			ret = PsdNewLayer(fHandle,"..\\..\\pic\\ms12.png",0,0,1,200);
//			ret = PsdNewLayer(fHandle,"..\\..\\pic\\ms12.png",200,200,2,200);
//			PsdSetLayerDirection(fHandle,1,RIGHT90);
//			PsdSetLayerDirection(fHandle,1,LEFT90);
			//PsdSetLayerBrightness(fHandle,1,-0);
			//PsdSetLayerContrast(fHandle,1,-50);
			PsdSaveFile(fHandle);
			PsdCloseFile(fHandle);		//must close firstly before load again...
		}

//		Psd2Bmp("..\\..\\pic\\tianye_new.psd","..\\..\\pic\\tianye_new_tmp.bmp");
		Psd2Png("..\\..\\pic\\tianye_1.psd","..\\..\\pic\\tianye_1_tmp.png");
		//pngzoom("..\\..\\pic\\tianye_new_tmp.png",50);

	}
	else if (!strcmp(argv[1],"psd2psd"))
	{
		//fHandle = PsdLoadFile("..\\..\\pic\\tianye_1.psd");	//tianye_1.psd has two layers already
		fHandle = PsdNewFile("..\\..\\pic\\tianye_1.psd","..\\..\\pic\\tianye.bmp");
		if (fHandle>=0)
		{
			//ret = PsdNewLayer(fHandle,"..\\..\\pic\\ms12.png",200,200,2,200);
			ret = PsdCreateLayer(fHandle,"..\\..\\pic\\ms12.png",200,200,100,200,2,200);
			ret = PsdSaveFile(fHandle);
			ret = PsdCloseFile(fHandle);
			Psd2Png("..\\..\\pic\\tianye_1.psd","..\\..\\pic\\tianye_1.png");
		}
		else
		{
			printf("fail to load psd file. ret=%d\n",ret);
		}		
	}
	else if (!strcmp(argv[1],"bmp2bmp"))
	{
		ret = bmp2bmp("..\\..\\pic\\tianye.bmp","..\\..\\pic\\tianye_tmp.bmp");
		if (ret>=0)
		{
			printf("bmp convert to bmp successfully!\n");
		}
	}		
	else if (!strcmp(argv[1],"jpg2bmp"))
	{
		//ret = jpg2bmp("..\\..\\pic\\testimg.jpg","..\\..\\pic\\testimg.bmp");
		ret = jpg2bmp("..\\..\\pic\\puke.jpg","..\\..\\pic\\puke_tmp.bmp");
		if (ret>=0)
		{
			printf("jpg convert to bmp successfully!\n");
		}
	}	
	else if (!strcmp(argv[1],"bmp2jpg"))
	{
		ret = bmp2jpg("..\\..\\pic\\tianye.bmp","..\\..\\pic\\tianye.jpg");
		if (ret>=0)
		{
			printf("bmp convert to jpg successfully!\n");
		}
	}
	else if (!strcmp(argv[1],"png2bmp"))
	{
		//ret = png2bmp("..\\..\\pic\\mxp.png","..\\..\\pic\\mxp_tmp.bmp");
		ret = png2bmp("..\\..\\pic\\ms12.png","..\\..\\pic\\ms12_tmp.bmp");

//		ret = png2bmp("..\\..\\pic\\lisa.png","..\\..\\pic\\lisa_tmp.bmp");		//can NOT load lisa.png into RAM
		if (ret>=0)
		{
			printf("png convert to bmp successfully!\n");
		}
	}	
	else if (!strcmp(argv[1],"bmp2png"))
	{
		ret = bmp2png("..\\..\\pic\\Bliss.bmp","..\\..\\pic\\Bliss.png");
		if (!ret)
		{
			printf("bmp convert to png successfully!\n");
		}
	}		
	else if (!strcmp(argv[1],"pngcrop"))
	{
		ret = bmp2png("..\\..\\pic\\Bliss.bmp","..\\..\\pic\\Bliss.png");
		//ret = pngzoom("..\\..\\pic\\Bliss.png",100);
		ret=pngcrop("..\\..\\pic\\Bliss.png",600,400);
	}		

	else
		;

	return 0;
}
Пример #5
0
int main( int argc , char** argv )
{
  int error = 0;
  const char* save_policy = NULL,
            * import_policy = NULL;
  oySCOPE_e scope = oySCOPE_USER;
  size_t size = 0;
  char * xml = NULL;
  char * import_policy_fn = NULL;
  int current_policy = 0, list_policies = 0, list_paths = 0,
      dump_policy = 0;
  int long_help = 0,
      internal_name = 0,
      file_name = 0;
  int verbose = 0;

#ifdef USE_GETTEXT
  setlocale(LC_ALL,"");
#endif
  oyExportStart_(EXPORT_CHECK_NO);

  if(argc >= 2)
  {
    int pos = 1, i;
    char *wrong_arg = 0;
    DBG_PROG1_S("argc: %d\n", argc);
    while(pos < argc)
    {
      switch(argv[pos][0])
      {
        case '-':
            for(i = 1; i < strlen(argv[pos]); ++i)
            switch (argv[pos][i])
            {
              case 'c': current_policy = 1; break;
              case 'd': dump_policy = 1; break;
              case 'e': internal_name = 1; break;
              case 'f': file_name = 1; break;
              case 'i': OY_PARSE_STRING_ARG(import_policy); break;
              case 'l': list_policies = 1; break;
              case 'p': list_paths = 1; break;
              case 's': OY_PARSE_STRING_ARG(save_policy); break;
              case 'v': if(verbose) oy_debug += 1; verbose = 1; break;
              case '-':
                        if(i == 1)
                        {
                             if(OY_IS_ARG("help"))
                        { long_help = 1; i=100; break; }
                        else if(OY_IS_ARG("path"))
                        { list_paths = 1; i=100; break; }
                        else if(OY_IS_ARG("system-wide"))
                        { scope = oySCOPE_SYSTEM; i=100; break; }
                        }
              case 'h':
              default:
                        printfHelp(argc, argv);
                        exit (0);
                        break;
            }
            break;
        default:
                        printfHelp(argc, argv);
                        exit (0);
                        break;
      }
      if( wrong_arg )
      {
       fprintf(stderr, "%s %s\n", _("wrong argument to option:"), wrong_arg);
       printfHelp(argc, argv);
       exit(1);
      }
      ++pos;
    }
  } else
  {
                        printfHelp(argc, argv);
                        exit (0);
  }

  if(verbose)
    fprintf( stderr, "  Oyranos v%s\n",
                  oyNoEmptyName_m_(oyVersionString(1,0)));

  /* check the default paths */
  /*oyPathAdd( OY_PROFILE_PATH_USER_DEFAULT );*/


  /* load the policy file into memory */
  import_policy_fn = oyMakeFullFileDirName_(import_policy);
  if(oyIsFile_(import_policy_fn))
  {
    xml = oyReadFileToMem_( oyMakeFullFileDirName_(import_policy), &size,
                            oyAllocateFunc_ );
    oyDeAllocateFunc_( import_policy_fn );
  }
  /* parse and set policy */
  if(xml)
  {
    oyReadXMLPolicy( oyGROUP_ALL, xml );
    oyDeAllocateFunc_( xml );
  }
  else if ( import_policy )
  {
    error = oyPolicySet( import_policy, 0 );
    if(error)
      fprintf( stderr, "%s:%d could not read file: %s\n",__FILE__,__LINE__, import_policy);
    return 1;
  }

  if(save_policy)
  {
    error = oyPolicySaveActual( oyGROUP_ALL, scope, save_policy );
    if(!error)
      fprintf( stdout, "%s \"%s\"\n",
               _("installed new policy"), save_policy);
    else
      fprintf( stdout, "\"%s\" %s %d\n", save_policy,
               _("installation of new policy file failed with error:"), error);

  } else
  if(current_policy || list_policies || list_paths)
  {
    const char ** names = NULL;
    int count = 0, i, current = -1;
    oyOptionChoicesGet( oyWIDGET_POLICY, &count, &names, &current );

    if(list_policies)
      for(i = 0; i < count; ++i)
      {
        if(file_name)
        {
          char * full_name = NULL;
          error = oyPolicyFileNameGet_( names[i],
                                            &full_name,
                                            oyAllocateFunc_ );
          if(error)
            fprintf(stderr, "%s error: %d\n", names[i], error);
          if(internal_name)
            fprintf(stdout, "%s (%s)\n", names[i], full_name);
          else
            fprintf(stdout, "%s\n", full_name);
          oyFree_m_( full_name );
        } else
          fprintf(stdout, "%s\n", names[i]);
      }

    if(current_policy)
    {
      fprintf( stderr, "%s\n", _("Currently active policy:"));
      if(current >= 0 && file_name)
      {
        char * full_name = NULL;
        error = oyPolicyFileNameGet_( names[current], &full_name,
                                          oyAllocateFunc_ );
        if(internal_name)
          fprintf(stdout, "%s (%s)\n", names[current], full_name);
        else
          fprintf(stdout, "%s\n", full_name);
        oyFree_m_( full_name );
      } else
        fprintf( stdout, "%s\n", current>=0?names[current]:"---");
    }

    if(list_paths)
    {
      char ** path_names = oyDataPathsGet_( &count, "color/settings",
                                              oyALL, oySCOPE_USER_SYS,
                                              oyAllocateFunc_ );
      fprintf(stdout, "%s:\n", _("Policy search paths"));
      for(i = 0; i < count; ++i)
        fprintf(stdout, "%s\n", path_names[i]);

      oyStringListRelease_(&path_names, count, oyDeAllocateFunc_);
    }

  } else
  if(dump_policy)
  {
    size = 0;
    xml = oyPolicyToXML( oyGROUP_ALL, 1, oyAllocateFunc_ );
    DBG_PROG2_S("%s:%d new policy:\n\n",__FILE__,__LINE__);
    fprintf(stdout, "%s\n", xml);

    if(xml) oyDeAllocateFunc_( xml );

  } else
  if(long_help)
  {
    const char * opts[] = {"add_html_header","1",
                           "add_oyranos_title","1",
                           "add_oyranos_copyright","1",
                           NULL};
    size = 0;
    xml = oyDescriptionToHTML( oyGROUP_ALL, opts, oyAllocateFunc_ );
    fprintf(stdout, "%s\n", xml);

    if(xml) oyDeAllocateFunc_( xml );
  }

  oyFinish_( FINISH_IGNORE_I18N | FINISH_IGNORE_CACHES );

  return error;
}
Пример #6
0
int main( int argc , char** argv )
{
  int error = 0;
  int flags = OY_NO_REPAIR,
      list_tags = 0,
      list_hash = 0,
      tag_pos = -1,
      remove_tag = 0,
      dump_openicc_json = 0,
      dump_chromaticities = 0,
      verbose = 0;
  const char * file_name = 0,
             * profile_desc = 0,
             * tag_name = 0,
             * name_space = 0,
             * json_name = 0,
             * format = "openicc",
             * profile_name = 0;
  const char * prefixes[24] = {0}; int pn = 0;
  const char * device_class = "unknown";
  int read_stdin = 0;
  oyProfile_s * p;
  oyProfileTag_s * tag;
  int simple = 0;

#ifdef USE_GETTEXT
  setlocale(LC_ALL,"");
#endif
  oyExportStart_(EXPORT_CHECK_NO);

  if(argc >= 2)
  {
    int pos = 1;
    unsigned i;
    char *wrong_arg = 0;
    DBG_PROG1_S("argc: %d\n", argc);
    while(pos < argc)
    {
      switch(argv[pos][0])
      {
        case '-':
            for(i = 1; pos < argc && i < strlen(argv[pos]); ++i)
            switch (argv[pos][i])
            {
              case '2': flags |= OY_ICC_VERSION_2; break;
              case '4': flags |= OY_ICC_VERSION_4; break;
              case 'c': OY_PARSE_STRING_ARG(device_class); break;
              case 'f': OY_PARSE_STRING_ARG(format); break;
              case 'i': read_stdin = 1; break;
              case 'j': OY_PARSE_STRING_ARG(json_name); break;
              case 'l': list_tags = 1; break;
              case 'm': list_hash = 1; break;
              case 'n': OY_PARSE_STRING_ARG(tag_name); break;
              case 'o': dump_openicc_json = 1; break;
              case 'p': OY_PARSE_INT_ARG( tag_pos ); break;
              case 'r': OY_PARSE_INT_ARG( tag_pos ); remove_tag = 1; break;
              case 's': OY_PARSE_STRING_ARG(name_space);
                        if(name_space)
                        {
                          int n = pn - 1, found = 0;
                          while(n >= 0)
                            if(strcmp( prefixes[n--], name_space ) == 0)
                              found = 1;
                          if( !found )
                            prefixes[pn++] = name_space;
                        }
                        break;
              case 'v': if(!verbose) verbose = 1; else oy_debug += 1; break;
              case 'w': OY_PARSE_STRING_ARG(profile_name); break;
              case 'h':
              case '-':
                        if(i == 1)
                        {
                             if(OY_IS_ARG("ppmcie"))
                        { dump_chromaticities = 1; i=100; break; }
                        else if(OY_IS_ARG("path"))
                        { simple = 2; i=100; break;}
                        else if(OY_IS_ARG("short"))
                        { simple = 1; i=100; break;}
                        } OY_FALLTHROUGH
              default:
                        printfHelp(argc, argv);
                        exit (0);
                        break;
            }
            break;
        default:
                        file_name = argv[pos];
                        break;
      }
      if( wrong_arg )
      {
       fprintf(stderr, "%s %s\n", _("wrong argument to option:"), wrong_arg);
       printfHelp(argc, argv);
       exit(1);
      }
      ++pos;
    }
  } else