瀏覽代碼

Improve adherence to consistent directory structure

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@34542 15284696-431f-4ddb-bdfa-cd5b030d7da7
Glynn Clements 16 年之前
父節點
當前提交
c2151b2286
共有 90 個文件被更改,包括 283 次插入42 次删除
  1. 13 2
      db/Makefile
  2. 0 22
      db/base/Makefile
  3. 12 0
      db/db.columns/Makefile
  4. 0 0
      db/db.columns/columns.c
  5. 0 0
      db/db.columns/db.columns.html
  6. 12 0
      db/db.connect/Makefile
  7. 0 0
      db/db.connect/connect.c
  8. 0 0
      db/db.connect/db.connect.html
  9. 12 0
      db/db.copy/Makefile
  10. 0 0
      db/db.copy/copy.c
  11. 0 0
      db/db.copy/db.copy.html
  12. 12 0
      db/db.createdb/Makefile
  13. 0 0
      db/db.createdb/createdb.c
  14. 0 0
      db/db.createdb/db.createdb.html
  15. 12 0
      db/db.databases/Makefile
  16. 0 0
      db/db.databases/databases.c
  17. 0 0
      db/db.databases/db.databases.html
  18. 12 0
      db/db.describe/Makefile
  19. 0 0
      db/db.describe/db.describe.html
  20. 0 0
      db/db.describe/describe.c
  21. 0 0
      db/db.describe/local_proto.h
  22. 0 0
      db/db.describe/printtab.c
  23. 12 0
      db/db.drivers/Makefile
  24. 0 0
      db/db.drivers/db.drivers.html
  25. 0 0
      db/db.drivers/drivers.c
  26. 12 0
      db/db.dropdb/Makefile
  27. 0 0
      db/db.dropdb/db.dropdb.html
  28. 0 0
      db/db.dropdb/dropdb.c
  29. 12 0
      db/db.droptable/Makefile
  30. 0 0
      db/db.droptable/db.droptable.html
  31. 0 0
      db/db.droptable/droptable.c
  32. 12 0
      db/db.execute/Makefile
  33. 0 0
      db/db.execute/db.execute.html
  34. 0 0
      db/db.execute/execute.c
  35. 12 0
      db/db.select/Makefile
  36. 0 0
      db/db.select/db.select.html
  37. 8 0
      db/db.select/local_proto.h
  38. 78 0
      db/db.select/printtab.c
  39. 0 0
      db/db.select/select.c
  40. 12 0
      db/db.tables/Makefile
  41. 0 0
      db/db.tables/db.tables.html
  42. 0 0
      db/db.tables/tables.c
  43. 0 0
      general/g.copy/main.c
  44. 0 0
      general/g.list/main.c
  45. 0 0
      general/g.remove/main.c
  46. 0 0
      general/g.rename/main.c
  47. 13 11
      raster/Makefile
  48. 1 1
      raster/wildfire/r.ros/Makefile
  49. 0 0
      raster/r.ros/local_proto.h
  50. 0 0
      raster/r.ros/main.c
  51. 0 0
      raster/r.ros/r.ros.html
  52. 0 0
      raster/r.ros/spot_dist.c
  53. 1 1
      raster/wildfire/r.spread/Makefile
  54. 0 0
      raster/r.spread/cell_ptrHa.h
  55. 0 0
      raster/r.spread/cmd_line.h
  56. 0 0
      raster/r.spread/collect_ori.c
  57. 0 0
      raster/r.spread/costHa.h
  58. 0 0
      raster/r.spread/deleteHa.c
  59. 0 0
      raster/r.spread/display.c
  60. 0 0
      raster/r.spread/fixHa.c
  61. 0 0
      raster/r.spread/get_minHa.c
  62. 0 0
      raster/r.spread/insert2Ha.c
  63. 0 0
      raster/r.spread/insertHa.c
  64. 0 0
      raster/r.spread/local_proto.h
  65. 0 0
      raster/r.spread/main.c
  66. 0 0
      raster/r.spread/pick_dist.c
  67. 0 0
      raster/r.spread/pick_ignite.c
  68. 0 0
      raster/r.spread/r.spread.html
  69. 0 0
      raster/r.spread/ram2out.c
  70. 0 0
      raster/r.spread/replaceHa.c
  71. 0 0
      raster/r.spread/select_linksB.c
  72. 0 0
      raster/r.spread/spot.c
  73. 0 0
      raster/r.spread/spread.c
  74. 1 1
      raster/wildfire/r.spreadpath/Makefile
  75. 0 0
      raster/r.spreadpath/drawline.c
  76. 0 0
      raster/r.spreadpath/insert.c
  77. 0 0
      raster/r.spreadpath/local_proto.h
  78. 0 0
      raster/r.spreadpath/main.c
  79. 0 0
      raster/r.spreadpath/path_finder.c
  80. 0 0
      raster/r.spreadpath/point.h
  81. 0 0
      raster/r.spreadpath/r.spreadpath.html
  82. 0 0
      raster/r.spreadpath/stash.h
  83. 3 1
      raster3d/Makefile
  84. 1 3
      raster3d/base/Makefile
  85. 10 0
      raster3d/r3.info/Makefile
  86. 0 0
      raster3d/r3.info/r3.info.html
  87. 0 0
      raster3d/r3.info/r3.info.main.c
  88. 10 0
      raster3d/r3.timestamp/Makefile
  89. 0 0
      raster3d/r3.timestamp/r3.timestamp.html
  90. 0 0
      raster3d/r3.timestamp/r3.timestamp.main.c

+ 13 - 2
db/Makefile

@@ -3,8 +3,19 @@ MODULE_TOPDIR = ..
 
 SUBDIRS = \
 	drivers \
-	base \
-	db.login
+	db.columns \
+	db.connect \
+	db.copy \
+	db.createdb \
+	db.databases \
+	db.describe \
+	db.drivers \
+	db.dropdb \
+	db.droptable \
+	db.execute \
+	db.login \
+	db.select \
+	db.tables
 
 PGM = databaseintro
 

+ 0 - 22
db/base/Makefile

@@ -1,22 +0,0 @@
-
-MODULE_TOPDIR = ../..
-
-LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
-DEPENDENCIES = $(GISDEP) $(DBMIDEP)
-
-#not used: db.createdb db.dropdb db.databases db.droptable
-PROGRAMS = db.columns db.copy db.describe db.drivers db.execute db.select db.tables db.connect
-
-db_columns_OBJS = columns.o
-db_copy_OBJS = copy.o
-db_describe_OBJS = describe.o printtab.o
-db_drivers_OBJS = drivers.o
-db_execute_OBJS = execute.o
-db_select_OBJS = select.o printtab.o
-db_tables_OBJS = tables.o
-db_connect_OBJS = connect.o
-
-include $(MODULE_TOPDIR)/include/Make/Multi.make
-
-default: multi
-

+ 12 - 0
db/db.columns/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.columns
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/columns.c → db/db.columns/columns.c


db/base/db.columns.html → db/db.columns/db.columns.html


+ 12 - 0
db/db.connect/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.connect
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/connect.c → db/db.connect/connect.c


db/base/db.connect.html → db/db.connect/db.connect.html


+ 12 - 0
db/db.copy/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.copy
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/copy.c → db/db.copy/copy.c


db/base/db.copy.html → db/db.copy/db.copy.html


+ 12 - 0
db/db.createdb/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.createdb
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/createdb.c → db/db.createdb/createdb.c


db/base/db.createdb.html → db/db.createdb/db.createdb.html


+ 12 - 0
db/db.databases/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.databases
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/databases.c → db/db.databases/databases.c


db/base/db.databases.html → db/db.databases/db.databases.html


+ 12 - 0
db/db.describe/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.describe
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/db.describe.html → db/db.describe/db.describe.html


db/base/describe.c → db/db.describe/describe.c


db/base/local_proto.h → db/db.describe/local_proto.h


db/base/printtab.c → db/db.describe/printtab.c


+ 12 - 0
db/db.drivers/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.drivers
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/db.drivers.html → db/db.drivers/db.drivers.html


db/base/drivers.c → db/db.drivers/drivers.c


+ 12 - 0
db/db.dropdb/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.dropdb
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/db.dropdb.html → db/db.dropdb/db.dropdb.html


db/base/dropdb.c → db/db.dropdb/dropdb.c


+ 12 - 0
db/db.droptable/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.droptable
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/db.droptable.html → db/db.droptable/db.droptable.html


db/base/droptable.c → db/db.droptable/droptable.c


+ 12 - 0
db/db.execute/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.execute
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/db.execute.html → db/db.execute/db.execute.html


db/base/execute.c → db/db.execute/execute.c


+ 12 - 0
db/db.select/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.select
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/db.select.html → db/db.select/db.select.html


+ 8 - 0
db/db.select/local_proto.h

@@ -0,0 +1,8 @@
+#ifndef __LOCAL_PROTO_H__
+#define __LOCAL_PROTO_H__
+
+int print_priv(char *, int);
+int print_column_definition(dbColumn *);
+int print_table_definition(dbDriver *, dbTable *);
+
+#endif /* __LOCAL_PROTO_H__ */

+ 78 - 0
db/db.select/printtab.c

@@ -0,0 +1,78 @@
+#include <grass/gis.h>
+#include <grass/dbmi.h>
+#include "local_proto.h"
+#include <grass/glocale.h>
+
+int print_table_definition(dbDriver * driver, dbTable * table)
+{
+    int ncols, col, nrows;
+    dbColumn *column;
+    char buf[1024];
+    dbString stmt;
+
+    fprintf(stdout, "table:%s\n", db_get_table_name(table));
+    fprintf(stdout, "description:%s\n", db_get_table_description(table));
+    print_priv("insert", db_get_table_insert_priv(table));
+    print_priv("delete", db_get_table_delete_priv(table));
+
+    ncols = db_get_table_number_of_columns(table);
+
+    db_init_string(&stmt);
+    sprintf(buf, "select * from %s", db_get_table_name(table));
+    db_set_string(&stmt, buf);
+    nrows = db_get_table_number_of_rows(driver, &stmt);
+    fprintf(stdout, "ncols:%d\n", ncols);
+    fprintf(stdout, "nrows:%d\n", nrows);
+    for (col = 0; col < ncols; col++) {
+	column = db_get_table_column(table, col);
+	fprintf(stdout, "\n");
+	print_column_definition(column);
+    }
+
+    return 0;
+}
+
+int print_column_definition(dbColumn * column)
+{
+    dbString value_string;
+
+    fprintf(stdout, "column:%s\n", db_get_column_name(column));
+    fprintf(stdout, "description:%s\n", db_get_column_description(column));
+    fprintf(stdout, "type:%s\n",
+	    db_sqltype_name(db_get_column_sqltype(column)));
+    fprintf(stdout, "len:%d\n", db_get_column_length(column));
+    fprintf(stdout, "scale:%d\n", db_get_column_scale(column));
+    fprintf(stdout, "precision:%d\n", db_get_column_precision(column));
+    fprintf(stdout, "default:");
+    if (db_test_column_has_default_value(column)) {
+	db_init_string(&value_string);
+	db_convert_column_default_value_to_string(column, &value_string);
+	fprintf(stdout, "%s", db_get_string(&value_string));
+    }
+    fprintf(stdout, "\n");
+    fprintf(stdout, "nullok:%s\n",
+	    db_test_column_null_allowed(column) ? "yes" : "no");
+    print_priv("select", db_get_column_select_priv(column));
+    print_priv("update", db_get_column_update_priv(column));
+
+    return 0;
+}
+
+int print_priv(char *label, int priv)
+{
+    fprintf(stdout, "%s:", label);
+    switch (priv) {
+    case DB_GRANTED:
+	fprintf(stdout, "yes");
+	break;
+    case DB_NOT_GRANTED:
+	fprintf(stdout, "no");
+	break;
+    default:
+	fprintf(stdout, "?");
+	break;
+    }
+    fprintf(stdout, "\n");
+
+    return 0;
+}

db/base/select.c → db/db.select/select.c


+ 12 - 0
db/db.tables/Makefile

@@ -0,0 +1,12 @@
+
+MODULE_TOPDIR = ../..
+
+LIBES = $(DBMILIB) $(GISLIB) $(DATETIMELIB)
+DEPENDENCIES = $(GISDEP) $(DBMIDEP)
+
+PGM = db.tables
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd
+

db/base/db.tables.html → db/db.tables/db.tables.html


db/base/tables.c → db/db.tables/tables.c


general/g.copy/copy.c → general/g.copy/main.c


general/g.list/list.c → general/g.list/main.c


general/g.remove/remove.c → general/g.remove/main.c


general/g.rename/rename.c → general/g.rename/main.c


+ 13 - 11
raster/Makefile

@@ -29,11 +29,12 @@ SUBDIRS = \
 	r.in.arc \
 	r.in.ascii \
 	r.in.bin \
-	r.info \
+	r.in.gdal \
 	r.in.gridatb \
 	r.in.mat \
 	r.in.poly \
 	r.in.xyz \
+	r.info \
 	r.kappa \
 	r.lake \
 	r.li \
@@ -46,12 +47,15 @@ SUBDIRS = \
 	r.out.arc \
 	r.out.ascii \
 	r.out.bin \
+	r.out.gdal \
 	r.out.gridatb \
 	r.out.mat \
 	r.out.mpeg \
+	r.out.png \
 	r.out.pov \
 	r.out.ppm \
 	r.out.ppm3 \
+	r.out.tiff \
 	r.out.vrml \
 	r.out.vtk \
 	r.param.scale \
@@ -67,14 +71,17 @@ SUBDIRS = \
 	r.recode \
 	r.region \
 	r.report \
-	r.resample \
 	r.resamp.interp \
 	r.resamp.rst \
 	r.resamp.stats \
+	r.resample \
 	r.rescale \
 	r.rescale.eq \
+	r.ros \
 	r.series \
 	r.slope.aspect \
+	r.spread \
+	r.spreadpath \
 	r.statistics \
 	r.statistics2 \
 	r.statistics3 \
@@ -85,10 +92,12 @@ SUBDIRS = \
 	r.support.stats \
 	r.surf.area \
 	r.surf.contour \
+	r.surf.fractal \
+	r.surf.gauss \
 	r.surf.idw \
 	r.surf.idw2 \
 	r.surf.random \
-	r.surf.gauss \
+	r.terraflow \
 	r.texture \
 	r.thin \
 	r.timestamp \
@@ -106,14 +115,7 @@ SUBDIRS = \
 	r.water.outlet \
 	r.watershed \
 	r.what \
-	r.what.color \
-	wildfire \
-	r.in.gdal \
-	r.out.gdal \
-	r.surf.fractal \
-	r.out.png \
-	r.terraflow \
-	r.out.tiff
+	r.what.color
 
 #	r.le \
 

+ 1 - 1
raster/wildfire/r.ros/Makefile

@@ -1,4 +1,4 @@
-MODULE_TOPDIR = ../../..
+MODULE_TOPDIR = ../..
 
 PGM = r.ros
 

raster/wildfire/r.ros/local_proto.h → raster/r.ros/local_proto.h


raster/wildfire/r.ros/main.c → raster/r.ros/main.c


raster/wildfire/r.ros/r.ros.html → raster/r.ros/r.ros.html


raster/wildfire/r.ros/spot_dist.c → raster/r.ros/spot_dist.c


+ 1 - 1
raster/wildfire/r.spread/Makefile

@@ -1,4 +1,4 @@
-MODULE_TOPDIR = ../../..
+MODULE_TOPDIR = ../..
 
 PGM = r.spread
 

raster/wildfire/r.spread/cell_ptrHa.h → raster/r.spread/cell_ptrHa.h


raster/wildfire/r.spread/cmd_line.h → raster/r.spread/cmd_line.h


raster/wildfire/r.spread/collect_ori.c → raster/r.spread/collect_ori.c


raster/wildfire/r.spread/costHa.h → raster/r.spread/costHa.h


raster/wildfire/r.spread/deleteHa.c → raster/r.spread/deleteHa.c


raster/wildfire/r.spread/display.c → raster/r.spread/display.c


raster/wildfire/r.spread/fixHa.c → raster/r.spread/fixHa.c


raster/wildfire/r.spread/get_minHa.c → raster/r.spread/get_minHa.c


raster/wildfire/r.spread/insert2Ha.c → raster/r.spread/insert2Ha.c


raster/wildfire/r.spread/insertHa.c → raster/r.spread/insertHa.c


raster/wildfire/r.spread/local_proto.h → raster/r.spread/local_proto.h


raster/wildfire/r.spread/main.c → raster/r.spread/main.c


raster/wildfire/r.spread/pick_dist.c → raster/r.spread/pick_dist.c


raster/wildfire/r.spread/pick_ignite.c → raster/r.spread/pick_ignite.c


raster/wildfire/r.spread/r.spread.html → raster/r.spread/r.spread.html


raster/wildfire/r.spread/ram2out.c → raster/r.spread/ram2out.c


raster/wildfire/r.spread/replaceHa.c → raster/r.spread/replaceHa.c


raster/wildfire/r.spread/select_linksB.c → raster/r.spread/select_linksB.c


raster/wildfire/r.spread/spot.c → raster/r.spread/spot.c


raster/wildfire/r.spread/spread.c → raster/r.spread/spread.c


+ 1 - 1
raster/wildfire/r.spreadpath/Makefile

@@ -1,4 +1,4 @@
-MODULE_TOPDIR = ../../..
+MODULE_TOPDIR = ../..
 
 PGM = r.spreadpath
 

raster/wildfire/r.spreadpath/drawline.c → raster/r.spreadpath/drawline.c


raster/wildfire/r.spreadpath/insert.c → raster/r.spreadpath/insert.c


raster/wildfire/r.spreadpath/local_proto.h → raster/r.spreadpath/local_proto.h


raster/wildfire/r.spreadpath/main.c → raster/r.spreadpath/main.c


raster/wildfire/r.spreadpath/path_finder.c → raster/r.spreadpath/path_finder.c


raster/wildfire/r.spreadpath/point.h → raster/r.spreadpath/point.h


raster/wildfire/r.spreadpath/r.spreadpath.html → raster/r.spreadpath/r.spreadpath.html


raster/wildfire/r.spreadpath/stash.h → raster/r.spreadpath/stash.h


+ 3 - 1
raster3d/Makefile

@@ -2,14 +2,16 @@ MODULE_TOPDIR = ..
 
 SUBDIRS = \
 	r3.cross.rast \
+	r3.gwflow \
 	r3.in.ascii \
 	r3.in.v5d \
-	r3.gwflow \
+	r3.info \
 	r3.mkdspf \
 	r3.out.ascii \
 	r3.out.v5d \
 	r3.out.vtk \
 	r3.stats \
+	r3.timestamp \
 	r3.to.rast \
 	base
 

+ 1 - 3
raster3d/base/Makefile

@@ -4,12 +4,10 @@ MODULE_TOPDIR = ../..
 LIBES = $(G3DLIB) $(GISLIB)
 DEPENDENCIES = $(G3DDEP) $(GISDEP)
 
-PROGRAMS = r3.info r3.mask r3.null r3.timestamp
+PROGRAMS = r3.mask r3.null
 
 r3_mask_OBJS = r3.mask.main.o mask_functions.o
 r3_null_OBJS = r3.null.main.o mask_functions.o
-r3_info_OBJS = r3.info.main.o
-r3_timestamp_OBJS = r3.timestamp.main.o
 
 include $(MODULE_TOPDIR)/include/Make/Multi.make
 

+ 10 - 0
raster3d/r3.info/Makefile

@@ -0,0 +1,10 @@
+MODULE_TOPDIR = ../..
+
+PGM=r3.info
+
+LIBES = $(G3DLIB) $(GISLIB)
+DEPENDENCIES = $(G3DDEP) $(GISDEP)
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd

raster3d/base/r3.info.html → raster3d/r3.info/r3.info.html


raster3d/base/r3.info.main.c → raster3d/r3.info/r3.info.main.c


+ 10 - 0
raster3d/r3.timestamp/Makefile

@@ -0,0 +1,10 @@
+MODULE_TOPDIR = ../..
+
+PGM=r3.timestamp
+
+LIBES = $(G3DLIB) $(GISLIB)
+DEPENDENCIES = $(G3DDEP) $(GISDEP)
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd

raster3d/base/r3.timestamp.html → raster3d/r3.timestamp/r3.timestamp.html


raster3d/base/r3.timestamp.main.c → raster3d/r3.timestamp/r3.timestamp.main.c