void sh_init(t_sh *sh, int ac, char **av) { int i; sh->bin = NULL; if ((sh->o = ft_getopt(ac, av, SH_OPTION)) < 0) exit(EXIT_FAILURE); if (bin_load(&sh->bin) < 0) ft_error("loading binary... Fail"); if (hist_load(&sh->hist) < 0) ft_error("loading history... Fail"); if (ISO(sh->o, SH_O_PROMPT)) { i = 0; while (++i < ac) { if (av[i][0] != '-') break ; } sh->prompt = av[i]; } else sh->prompt = SH_DEFAULT_PROMPT; sh->settings = SH_DEFAULT_SETTINGS; sh->ac = ac; sh->av = av; }
int main(int ac, char **av) { int n; int opt; char *oldrep; char *rep; char *tmp; char msg[2048]; ft_init(av[0]); opt = ft_getopt(ac, av, "LP"); if (!(n = ft_countarg(ac, av))) oldrep = cd_currentrep(); else oldrep = av[ac - n]; if (!(rep = cd_cleanpath(oldrep))) ft_exit(1, "Memory allocation fail"); if (CD_ISO(opt, CD_O_P) && CD_ISO(opt, CD_O_L)) return (cd_usage()); tmp = getcwd(NULL, 0); if (access(rep, F_OK)) { ft_sprintf(msg, "No such directory: %s", oldrep); ft_error(msg); return (-1); } if (chdir(rep)) { ft_sprintf(msg, "Permission denied: %s", oldrep); ft_error(msg); return (-1); } ft_setenv("OLDPWD=", ft_getenv("PWD")); if (CD_ISO(opt, CD_O_P)) ft_setenv("PWD=", tmp); else ft_setenv("PWD=", rep); free(tmp); ft_printf("%s\n", ft_getenv("PWD")); return (0); }
int main(int argc, char **argv) { t_getopt opt; t_sgetopt_params params; if (argc < 2 || !argv) return (-1); params.opstring = argv[1]; params.usage = argv[1]; params.argv = argv; params.argc = argc; params.genlist = 1; if (!(opt = ft_getoptnew(¶ms))) return (-1); while (-1 != ft_getopt(opt) && !opt->err) ft_tracegetopt(opt); ft_tracegetopt(opt); ft_putnbr(ft_ldcdsize(opt->arglist)); ft_putldcd(opt->arglist, (t_putretgen)&ft_putendl); return (0); }
int main( int argc, char** argv ) { int i, orig_ptsize, file; char filename[128 + 4]; char alt_filename[128 + 4]; char* execname; int option; int ptsize; int num_Faces = 0; int glyph_index = 0; int load_flags = TTLOAD_DEFAULT; int force_sbit = 0; TT_Engine engine; TT_Face face; TT_Instance instance; TT_Glyph glyph; TT_Raster_Map map; TT_Big_Glyph_Metrics metrics; TT_Face_Properties properties; TT_Instance_Metrics imetrics; TT_EBLC eblc; TT_SBit_Image* bitmap = NULL; TT_Error error; int res = 72; #ifdef HAVE_LIBINTL_H setlocale( LC_ALL, "" ); bindtextdomain( "freetype", LOCALEDIR ); textdomain( "freetype" ); #endif execname = ft_basename( argv[0] ); while ( 1 ) { option = ft_getopt( argc, argv, "c:r:i:B" ); if ( option == -1 ) break; switch ( option ) { case 'r': res = atoi( ft_optarg ); if ( res < 1 ) usage( execname ); break; case 'c': num_Faces = atoi( ft_optarg ); if ( num_Faces < 0 ) usage( execname ); break; case 'i': glyph_index = atoi( ft_optarg ); if ( glyph_index < 0 ) usage( execname ); break; case 'B': force_sbit = 1; break; default: usage( execname ); break; } } argc -= ft_optind; argv += ft_optind; if ( argc <= 1 ) usage( execname ); if ( sscanf( argv[0], "%d", &orig_ptsize ) != 1 ) orig_ptsize = 64; file = 1; ptsize = orig_ptsize; i = strlen( argv[file] ); while ( i > 0 && argv[file][i] != '\\' && argv[file][i] != '/' ) { if ( argv[file][i] == '.' ) i = 0; i--; } filename[128] = '\0'; alt_filename[128] = '\0'; strncpy( filename, argv[file], 128 ); strncpy( alt_filename, argv[file], 128 ); if ( i >= 0 ) { strncpy( filename + strlen( filename ), ".ttf", 4 ); strncpy( alt_filename + strlen( alt_filename ), ".ttc", 4 ); } /* Initialize engine */ error = TT_Init_FreeType( &engine ); if ( error ) { fprintf( stderr, gettext( "Error while initializing engine.\n" ) ); goto Failure; } error = TT_Init_SBit_Extension( engine ); if ( error ) { fprintf( stderr, gettext( "Error while initializing embedded bitmap extension.\n" ) ); goto Failure; } /* Load face */ error = TT_Open_Face( engine, filename, &face ); if ( error == TT_Err_Could_Not_Open_File ) { strcpy( filename, alt_filename ); error = TT_Open_Face( engine, alt_filename, &face ); } if ( error == TT_Err_Could_Not_Open_File ) Panic( gettext( "Could not find or open %s.\n" ), filename ); if ( error ) { fprintf( stderr, gettext( "Error while opening %s.\n" ), filename ); goto Failure; } TT_Get_Face_Properties( face, &properties ); printf( gettext( "There are %d fonts in this collection.\n" ), (int)(properties.num_Faces) ); if ( num_Faces >= properties.num_Faces ) Panic( gettext( "There is no collection with index %d in this font file.\n" ), num_Faces ); TT_Close_Face( face ); error = TT_Open_Collection( engine, filename, num_Faces, &face ); /* get face properties and eblc */ TT_Get_Face_Properties( face, &properties ); if ( force_sbit ) { error = TT_Get_Face_Bitmaps( face, &eblc ); if ( error == TT_Err_Table_Missing ) Panic( gettext( "There is no embedded bitmap data in the font.\n" ) ); if ( error ) { fprintf( stderr, gettext( "Error while retrieving embedded bitmaps table.\n" ) ); goto Failure; } } /* create glyph */ error = TT_New_Glyph( face, &glyph ); if ( error ) { fprintf( stderr, gettext( "Could not create glyph container.\n" ) ); goto Failure; } /* create instance */ error = TT_New_Instance( face, &instance ); if ( error ) { fprintf( stderr, gettext( "Could not create instance.\n" ) ); goto Failure; } error = TT_Set_Instance_Resolutions( instance, res, res ); if ( error ) { fprintf( stderr, gettext( "Could not set device resolutions.\n" ) ); goto Failure; } error = TT_Set_Instance_CharSize( instance, ptsize*64 ); if ( error ) { fprintf( stderr, gettext( "Could not reset instance.\n" ) ); goto Failure; } TT_Get_Instance_Metrics( instance, &imetrics ); printf( gettext( "Instance metrics: ppemX %d, ppemY %d\n" ), imetrics.x_ppem, imetrics.y_ppem ); if ( force_sbit ) { error = TT_New_SBit_Image( &bitmap ); if ( error ) { fprintf( stderr, gettext( "Could not allocate glyph bitmap container.\n" ) ); goto Failure; } error = TT_Load_Glyph_Bitmap( face, instance, glyph_index, bitmap ); if ( error ) { fprintf( stderr, gettext( "Can't load bitmap for glyph %d.\n" ), glyph_index ); goto Failure; } Show_Metrics( bitmap->metrics, "SBit's metrics" ); printf( "SBit glyph:\n" ); Show_Single_Glyph( &bitmap->map ); } else { TT_Load_Glyph( instance, glyph, glyph_index, load_flags ); TT_Get_Glyph_Big_Metrics( glyph, &metrics ); map.width = ( metrics.bbox.xMax - metrics.bbox.xMin ) / 64; map.rows = ( metrics.bbox.yMax - metrics.bbox.yMin ) / 64; map.cols = ( map.width + 7 ) / 8; map.size = map.cols * map.rows; map.bitmap = malloc( map.size ); map.flow = TT_Flow_Down; memset( map.bitmap, 0, map.size ); error = TT_Get_Glyph_Bitmap( glyph, &map, -metrics.bbox.xMin, -metrics.bbox.yMin ); Show_Metrics( metrics, gettext( "Outline's metrics" ) ); printf( gettext( "Outline glyph\n" ) ); Show_Single_Glyph( &map ); } free( map.bitmap ); if ( bitmap ) TT_Done_SBit_Image( bitmap ); TT_Done_Instance( instance ); TT_Done_Glyph( glyph ); TT_Done_FreeType( engine ); exit( EXIT_SUCCESS ); /* for safety reasons */ return 0; /* never reached */ Failure: fprintf( stderr, " " ); fprintf( stderr, gettext( "FreeType error message: %s\n" ), TT_ErrToString18( error ) ); exit( EXIT_FAILURE ); return 0; /* never reached */ }